Esempio n. 1
0
        public override TypescriptBuilder Build(TypescriptBuilder builder, IElement parent)
        {
            if (Decorators.Any())
            {
                builder.NewLine();
            }
            builder.Join(Decorators, b => b.NewLine());
            if (Decorators.Any())
            {
                builder.NewLine();
            }

            if (parent == null)
            {
                builder.Append("var ").Append(Name);

                if (HasType)
                {
                    builder.Append(": ").Append(Type);
                }
                if (HasValue)
                {
                    builder.Append(" = ").Append(Value);
                }

                builder.Append(";");
            }

            if (HasGetter && parent is Class)
            {
                builder.Append(Get, this);
            }

            if (HasGetter && HasSetter)
            {
                builder.NewLine();
            }

            if (HasSetter && parent is Class)
            {
                builder.Append(Set, this);
            }

            if (!HasSetter && !HasGetter && parent != null || parent is Interface)
            {
                var modifiers = Modifiers.Distinct().OrderBy(m => !(m is IAccessor)).Select(m => m.ToString());
                builder.Join(modifiers, " ");

                if (Modifiers.Any())
                {
                    builder.Append(' ');
                }

                builder.Append(Name);

                if (HasType)
                {
                    builder.Append(": ").Append(Type);
                }
                if (HasValue)
                {
                    builder.Append(" = ").Append(Value);
                }

                builder.Append(";");
            }

            return(builder);
        }