private void WriteChained(ChainedCodeFragment fragment, IOutputCache output)
        {
            this.progressedChainedCodeFragments.Add(fragment.First());
            bool isFirst = true;

            foreach (ChainedCodeFragment codeFragment in fragment.First().Yield().Cast <ChainedCodeFragment>())
            {
                if (!isFirst)
                {
                    output.Add(codeFragment.Separator);
                }
                isFirst = false;
                this.Write(codeFragment, output);
                //output.Add(codeFragment, this);
                if (codeFragment.NewLineAfter)
                {
                    output.BreakLine();
                }
                if (codeFragment.CloseAfter)
                {
                    output.CloseLine();
                }
                if (codeFragment.BreakAfter)
                {
                    output.BreakLine().ExtraIndent();
                }
            }
        }
        public virtual void Write(ICodeFragment fragment, IOutputCache output)
        {
            AttributeTemplate template = (AttributeTemplate)fragment;

            output.Add("[")
            .Add(template.Name);
            if (template.HasValue || template.Properties.Count > 0)
            {
                output.Add("(");
                if (template.HasValue)
                {
                    output.Add(template.Code);
                }
                if (template.Properties.Count > 0)
                {
                    foreach (KeyValuePair <string, object> pair in template.Properties)
                    {
                        output.Add($"{pair.Key} = {this.Language.ConvertValue(pair.Value)}");
                    }
                }
                output.Add(")");
            }
            output.Add("]");
            if (template.IsInline)
            {
                output.Add(" ");
            }
            else
            {
                output.BreakLine();
            }
        }
Exemple #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();
            }
        }
Exemple #4
0
        public virtual void Write(ICodeFragment fragment, IOutputCache output)
        {
            CommentTemplate comment = (CommentTemplate)fragment;

            if (comment.IsEmpty())
            {
                return;
            }
            foreach (string line in this.SplitLines(comment.Description))
            {
                if (line.TrimStart().StartsWith("/*"))
                {
                    if (line.EndsWith("*/"))
                    {
                        output.Add(line);
                    }
                    else
                    {
                        output.Add(line.Replace("*/", "*/ //"));
                    }
                }
                else
                {
                    output.Add($"// {line}".Trim());
                }
                output.BreakLine();
            }
        }
 protected virtual void WriteHeader(FileTemplate fileTemplate, IOutputCache output)
 {
     if (fileTemplate.Header?.Description != null)
     {
         this.Write(fileTemplate.Header, output);
         output.BreakLine();
     }
 }
        protected virtual void WriteUsings(FileTemplate fileTemplate, IOutputCache output)
        {
            List <UsingTemplate> usings = this.GetUsings(fileTemplate).ToList();

            if (usings.Count <= 0)
            {
                return;
            }
            this.Write(usings, output);
            output.BreakLine();
        }
Exemple #7
0
        protected override void BeforeBlock(ICodeFragment fragment, IOutputCache output)
        {
            ConstructorTemplate constructorTemplate = (ConstructorTemplate)fragment;

            if (constructorTemplate.ConstructorCall != null)
            {
                output.BreakLine()
                .Indent()
                .Add(": ")
                .Add(constructorTemplate.ConstructorCall)
                .UnIndent();
            }
        }
Exemple #8
0
        protected override void WriteHeader(FileTemplate fileTemplate, IOutputCache output, bool appendBlankLine = true)
        {
            base.WriteHeader(fileTemplate, output, false);
            Dictionary <string, bool> linters = fileTemplate.Linters ?? new Dictionary <string, bool> {
                { "eslint", false }, { "tslint", false }
            };

            foreach (KeyValuePair <string, bool> linter in linters)
            {
                switch (linter.Key.ToLower())
                {
                case "eslint":
                    output.Add("/* eslint-disable */");
                    break;

                case "tslint":
                    output.Add("// tslint:disable");
                    break;
                }
                output.BreakLine();
            }
            output.BreakLine();
        }
        public virtual void Write(ICodeFragment fragment, IOutputCache output)
        {
            ConstraintTemplate template = (ConstraintTemplate)fragment;

            if (template.Types.Count == 0)
            {
                return;
            }
            output.BreakLine()
            .Indent()
            .Add("where ")
            .Add(template.Name)
            .Add(" : ")
            .Add(template.Types, ", ")
            .UnIndent();
        }
        public virtual void Write(ICodeFragment fragment, IOutputCache output)
        {
            PropertyTemplate template         = (PropertyTemplate)fragment;
            PropertyTemplate previousProperty = output.LastFragments.TakeWhile(x => !(x is ClassTemplate)).OfType <PropertyTemplate>().Skip(1).FirstOrDefault();

            if (previousProperty?.Attributes.Count > 0 || previousProperty != null && template.Attributes.Count > 0)
            {
                output.BreakLine();
            }
            if (template.Comment != null && !string.IsNullOrWhiteSpace(template.Comment.Description))
            {
                output.Add(template.Comment).BreakLine();
            }
            if (template.Attributes.Count > 0)
            {
                output.Add(template.Attributes);
            }
            output.Add(template.Visibility == Visibility.None ? string.Empty : template.Visibility.ToString().ToLower())
            .Add(" ")
            .Add(template.IsVirtual ? "virtual " : string.Empty)
            .Add(template.IsStatic ? "static " : string.Empty)
            .Add(template.Type)
            .Add(" ")
            .Add(template.Name);
            if (template.HasGetter || template.HasSetter)
            {
                output.Add(" { ")
                .Add(template.HasGetter ? "get; " : string.Empty)
                .Add(template.HasSetter ? "set; " : string.Empty)
                .Add("}");
            }
            if (template.DefaultValue != null)
            {
                output.Add(" = ")
                .Add(template.DefaultValue)
                .CloseLine();
            }
            if (template.Expression != null)
            {
                output.Add(" => ")
                .Add(template.Expression)
                .CloseLine();
            }
            output.BreakLineIfNotEmpty();
        }
        public virtual void Write(ICodeFragment fragment, IOutputCache output)
        {
            FieldTemplate template     = (FieldTemplate)fragment;
            FieldTemplate lastTemplate = output.LastFragments.FirstOrDefault() as FieldTemplate;

            if (template.Attributes.Count > 0 || lastTemplate?.Attributes.Count > 0)
            {
                output.BreakLine();
            }
            output.Add(template.Attributes)
            .If(template.Visibility != Visibility.None).Add(template.Visibility.ToString().ToLower()).Add(" ").EndIf()
            .If(template.IsStatic).Add("static ").EndIf()
            .If(template.IsConstant).Add("const ").EndIf()
            .If(template.IsReadonly).Add("readonly ").EndIf()
            .Add(template.Type).Add(" ")
            .Add(template.Name)
            .If(template.DefaultValue != null && !template.Class.IsInterface).Add(" = ").Add(template.DefaultValue).EndIf()
            .CloseLine();
        }
Exemple #12
0
        public override void Write(ICodeFragment fragment, IOutputCache output)
        {
            EnumTemplate template = (EnumTemplate)fragment;

            template.BasedOn = null;
            base.Write(fragment, output);

            output.BreakLine()
            .Add($"export const {template.Name}Values = [").Add(template.Values.Select(x => x.Value), ", ").Add("]").CloseLine()
            .Add($"export const {template.Name}Names = [").Add(template.Values.Select(x => Code.String(x.Name)), ", ").Add("]").CloseLine()
            .Add($"export const {template.Name}ValueMapping: {{ [key: number]: string }} = {{ ");
            bool isFirst = true;

            foreach (EnumValueTemplate value in template.Values)
            {
                if (isFirst)
                {
                    isFirst = false;
                }
                else
                {
                    output.Add(", ");
                }
                output.Add(value.Value).Add(": ").Add(Code.String(value.Name));
            }
            output.Add(" }").CloseLine()
            .Add($"export const {template.Name}NameMapping: {{ [key: string]: number }} = {{ ");
            isFirst = true;
            foreach (EnumValueTemplate value in template.Values)
            {
                if (isFirst)
                {
                    isFirst = false;
                }
                else
                {
                    output.Add(", ");
                }
                output.Add(Code.String(value.Name)).Add(": ").Add(value.Value);
            }
            output.Add(" }").CloseLine();
        }
Exemple #13
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();
        }
 public virtual void Write(ICodeFragment fragment, IOutputCache output)
 {
     output.BreakLine();
 }