public virtual void Write(ICodeFragment fragment, IOutputCache output) { MethodTemplate template = (MethodTemplate)fragment; if (template.Generics != null && template.Generics.Any(x => x.DefaultType != null)) { throw new InvalidOperationException($"This language does not support default types for generic methods. {template.Class.Name}.{template.Name}"); } output.Add(template.Comment) .Add(template.Attributes) .Add(template.Visibility.ToString().ToLower()).Add(" ") .If(template.IsStatic).Add("static ").EndIf() .If(template.IsOverride).Add("override ").EndIf() .If(template.Type != null).Add(template.Type).Add(" ").EndIf() .Add(template.Name) .If(template.Generics != null && template.Generics.Count > 0).Add("<").Add(template.Generics, ", ").Add(">").EndIf() .Add("(") .If(template is ExtensionMethodTemplate).Add("this ").EndIf() .Add(template.Parameters.OrderBy(x => x.DefaultValue == null ? 0 : 1), ", ") .Add(")"); this.BeforeBlock(fragment, output); output.StartBlock() .Add(template.Code) .EndBlock(); }
public virtual void Write(ICodeFragment fragment, IOutputCache output) { BaseLanguage language = this.options.Language.CastTo <BaseLanguage>(); EnumTemplate template = (EnumTemplate)fragment; output.Add(template.Attributes) .Add(language.ClassScope) .Add(" enum ") .Add(template.Name); if (template.BasedOn != null) { output.Add(" : ").Add(template.BasedOn); } output.StartBlock(); EnumValueTemplate last = template.Values.LastOrDefault(); foreach (EnumValueTemplate enumTemplateValue in template.Values) { output.Add($"{enumTemplateValue.FormattedName} = ") .Add(enumTemplateValue.Value) .Add(last == enumTemplateValue ? string.Empty : ",") .BreakLine(); } output.EndBlock(); }
public virtual void Write(ICodeFragment fragment, IOutputCache output) { TypeScriptTemplate template = (TypeScriptTemplate)fragment; output.Add(template.Code); if (template.CloseAfter) { output.CloseLine(); } if (template.BreakAfter) { output.BreakLine(); } if (template.StartBlockAfter) { output.StartBlock(); } if (template.EndBlockAfter) { output.EndBlock(); } if (template.IndentAfter) { output.Indent(); } if (template.UnindentAfter) { output.UnIndent(); } }
public virtual void Write(ICodeFragment fragment, IOutputCache output) { LambdaTemplate template = (LambdaTemplate)fragment; output.Add("("); if (template.Parameters != null) { output.Add(template.Parameters, ", "); } else if (template.ParameterNames?.Count == 1) { output.Add(template.ParameterNames[0]); } else if (template.ParameterNames?.Count > 1) { output.Add(string.Join(", ", template.ParameterNames)); } output.Add(")") .Add(" =>"); if (template.Code is MultilineCodeFragment) { output.StartBlock(); } else { output.Add(" "); } output.Add(template.Code); if (template.Code is MultilineCodeFragment) { output.EndBlock(this.options.Formatting.StartBlockInNewLine); } }
public virtual void Write(ICodeFragment fragment, IOutputCache output) { ElseIfTemplate template = (ElseIfTemplate)fragment; output.Add("else if (") .Add(template.Condition) .Add(")"); output.StartBlock().Add(template.Code).EndBlock(); }
public virtual void Write(ICodeFragment fragment, IOutputCache output) { LambdaTemplate template = (LambdaTemplate)fragment; output.Add(template.ParameterName ?? "()") .Add(" =>"); if (template.Code is MultilineCodeFragment) { output.StartBlock(); } else { output.Add(" "); } output.Add(template.Code); if (template.Code is MultilineCodeFragment) { output.EndBlock(output.Language.Formatting.StartBlockInNewLine); } }
public virtual void Write(ICodeFragment fragment, IOutputCache output) { MethodTemplate template = (MethodTemplate)fragment; output.Add(template.Comment) .Add(template.Attributes) .Add(template.Visibility.ToString().ToLower()).Add(" ") .If(template.IsStatic).Add("static ").EndIf() .If(template.IsOverride).Add("override ").EndIf() .If(template.Type != null).Add(template.Type).Add(" ").EndIf() .Add(template.Name) .Add("(") .If(template is ExtensionMethodTemplate).Add("this ").EndIf() .Add(template.Parameters.OrderBy(x => x.DefaultValue == null ? 0 : 1), ", ") .Add(")"); this.BeforeBlock(fragment, output); output.StartBlock() .Add(template.Code) .EndBlock(); }
public virtual void Write(ICodeFragment fragment, IOutputCache output) { BaseLanguage language = this.options.Language.CastTo <BaseLanguage>(); ClassTemplate template = (ClassTemplate)fragment; output.Add(template.Comment); output.Add(template.Attributes); output.Add(language.ClassScope).Add(" "); if (template.IsAbstract && language.HasAbstractClasses && !template.IsInterface) { output.Add("abstract "); } if (template.IsStatic && language.HasStaticClasses) { output.Add("static "); } else if (!string.IsNullOrEmpty(language.PartialKeyword)) { output.Add(language.PartialKeyword).Add(" "); } if (template.IsInterface) { output.Add("interface "); } else { output.Add("class "); } output.Add(template.Name); if (template.Generics.Count > 0) { output.Add("<").Add(template.Generics.Select(x => Code.Instance.Type(x.Name)), ", ").Add(">"); } template.BasedOn.OrderBy(x => x.ToType().IsInterface).ForEach(x => output.Add(x)); output.Add(template.Generics.Select(x => x.ToConstraints()).Where(x => x.Types.Count > 0)); output.StartBlock(); if (template.IsInterface) { template.Fields.ForEach(x => x.Visibility = Visibility.None); template.Properties.ForEach(x => x.Visibility = Visibility.None); } bool isFirst = true; if (template.Classes.Count > 0) { output.Add(template.Classes); isFirst = false; } if (template.Fields.Count > 0) { output.If(!isFirst).BreakLine().EndIf(); output.Add(template.Fields); isFirst = false; } if (template.Properties.Count > 0) { output.If(!isFirst).BreakLine().EndIf(); output.Add(template.Properties); isFirst = false; } if (template.Code != null) { output.If(!isFirst).BreakLine().EndIf(); output.Add(template.Code); isFirst = false; } if (template.Methods.Count > 0) { output.If(!isFirst).BreakLine().EndIf(); MethodTemplate last = template.Methods.Last(); foreach (MethodTemplate method in template.Methods) { output.Add(method); if (method != last) { output.BreakLine(); } } } if (this.options.Formatting.CollapseEmptyClasses && output.LastFragments.First().Equals(template)) { output.UnBreakLine(); output.Add(this.options.Formatting.CollapsedClassesSpacer, true); } output.EndBlock(); }