Exemplo n.º 1
0
        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();
        }
Exemplo n.º 2
0
        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();
        }
Exemplo n.º 3
0
        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();
            }
        }
Exemplo n.º 4
0
        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);
            }
        }
Exemplo n.º 5
0
        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();
        }
Exemplo n.º 6
0
        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);
            }
        }
Exemplo n.º 7
0
        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();
        }
Exemplo n.º 8
0
        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();
        }