Пример #1
0
        public void Write(IKeyboard keyboard,
                          TsEnum tsEnum)
        {
            keyboard.Write(tsEnum.ExportKind)
            .Type("enum ", tsEnum.Name, " ");
            using (keyboard.Block())
            {
                foreach (var tsEnumValue in tsEnum.Values)
                {
                    using (keyboard.Line())
                    {
                        keyboard.Type(tsEnumValue.Name, " = ");
                        switch (tsEnumValue)
                        {
                        case TsEnumNumberValue numberValue:
                            keyboard.Write(numberValue.Value);
                            break;

                        case TsEnumStringValue stringValue:
                            keyboard.Write(stringValue.Value);
                            break;

                        default:
                            throw new ArgumentOutOfRangeException(nameof(tsEnumValue), tsEnumValue, null);
                        }

                        keyboard.Type(",");
                    }
                }
            }

            keyboard.NewLine();
        }
Пример #2
0
        private void Write(IKeyboard keyboard,
                           TsObjectType tsObjectType)
        {
            using (keyboard.Block())
            {
                foreach (var tsTypeMember in tsObjectType.Members)
                {
                    switch (tsTypeMember)
                    {
                    case TsIndexSignature tsIndexSignature:
                        keyboard.Indent()
                        .Type("[key: ")
                        .Write(tsIndexSignature.IndexType)
                        .Type("]: ")
                        .Write(tsIndexSignature.ValueType)
                        .Type(";");
                        break;

                    default:
                        throw new ArgumentOutOfRangeException(nameof(tsTypeMember),
                                                              tsTypeMember.GetType().Name,
                                                              null);
                    }
                }
            }
        }
Пример #3
0
        public void Write(IKeyboard keyboard,
                          TsInterface tsInterface)
        {
            keyboard.Write(tsInterface.ExportKind)
            .Type("interface ", tsInterface.Name);
            if (tsInterface.TypeParameters.Any())
            {
                keyboard.Type("<");
                for (var i = 0; i < tsInterface.TypeParameters.Length; i++)
                {
                    keyboard.Type(tsInterface.TypeParameters[i]);
                    if (i != tsInterface.TypeParameters.Length - 1)
                    {
                        keyboard.Type(", ");
                    }
                }

                keyboard.Type(">");
            }

            keyboard.Type(" ");

            if (tsInterface.Base.Any())
            {
                keyboard.Type("extends ");
                for (var i = 0; i < tsInterface.Base.Length; i++)
                {
                    keyboard.Write(tsInterface.Base[i]);
                    if (i != tsInterface.Base.Length - 1)
                    {
                        keyboard.Type(", ");
                    }
                }

                keyboard.Type(" ");
            }

            using (keyboard.Block())
            {
                foreach (var tsInterfaceProperty in tsInterface
                         .Properties.OfType <TsPropertySignature>())
                {
                    using (keyboard.Line())
                    {
                        keyboard.Type(tsInterfaceProperty.Name);
                        if (tsInterfaceProperty.Optional)
                        {
                            keyboard.Type("?");
                        }
                        keyboard.Type(": ")
                        .Write(tsInterfaceProperty.Type)
                        .Type(";");
                    }
                }
            }

            keyboard.NewLine();
        }
Пример #4
0
        public void Write(IKeyboard keyboard,
                          TsNamespace tsNamespace)
        {
            keyboard.Write(tsNamespace.ExportKind)
            .Type("namespace ", tsNamespace.Name, " ");
            using (keyboard.Block())
            {
                var declarations = tsNamespace.Declarations.ToArray();
                for (var i = 0; i < declarations.Length; i++)
                {
                    keyboard.Write(declarations[i]);
                    if (i != declarations.Length - 1)
                    {
                        keyboard.NewLine();
                    }
                }
            }

            keyboard.NewLine();
        }
Пример #5
0
        public void Write(IKeyboard keyboard,
                          TsFunction tsFunction)
        {
            keyboard.Write(tsFunction.ExportKind)
            .Type("function ")
            .Write(new TsIdentifier(tsFunction.Name))
            .Type("(");
            var parameters = tsFunction.Parameters.ToArray();

            for (var i = 0; i < parameters.Length; i++)
            {
                var parameter = parameters[i];
                keyboard.Type(parameter.Name, ": ")
                .Write(parameter.Type);
                if (i != parameters.Length - 1)
                {
                    keyboard.Type(", ");
                }
            }

            keyboard.Type(")");
            if (tsFunction.ReturnType != null)
            {
                keyboard.Type(": ")
                .Write(tsFunction.ReturnType);
            }

            keyboard.Type(" ");
            using (keyboard.Block())
            {
                var bodyLines =
                    tsFunction.Body.Split(new[] { Environment.NewLine }, StringSplitOptions.None);
                foreach (var bodyLine in bodyLines)
                {
                    using (keyboard.Line())
                        keyboard.Type(bodyLine);
                }
            }

            keyboard.NewLine();
        }