public CodeSnippetWriter BuildModel(IComplexTypeInfo typeInfo)
        {
            return(writer =>
            {
                writer.OpenBlock(
                    $"export const {typeInfo.Name}Props =");
                foreach (var prop in typeInfo.Properties)
                {
                    writer.Write($"{prop.Name}: ", true);
                    writer.Write(WrapType(prop.Type));
                    writer.WriteLine(",", false);
                }
                writer.CloseBlock();


                writer.OpenBlock(
                    $"export const {typeInfo.Name} = types.model('{typeInfo.Name}',");
                writer.WriteLine($"...{typeInfo.Name}Props");
                writer.CloseBlock("});");
                writer.WriteLine("");
                if (_options.EmitInstanceType)
                {
                    writer.WriteLine(
                        $"export type {_options.InstanceTypeName(typeInfo.Name)} = Instance<typeof {typeInfo.Name}>;");
                    writer.WriteLine("");
                }
            });
        }
        public CodeSnippetWriter Build(IComplexTypeInfo typeInfo)
        {
            return(writer =>
            {
                writer.Write($"export {(typeInfo.IsAbstract ? "abstract " : "")}class ");
                writer.WriteTypeRef(typeInfo.TypeReference);
                writer.OpenBlock();
                foreach (var prop in typeInfo.Properties)
                {
                    writer.Write($"{prop.Name}{(prop.Type.Optional ? "?":"")}: ", true);
                    writer.WriteTypeRef(prop.Type);
                    writer.WriteLine(";", false);
                }

                foreach (var method in typeInfo.Methods)
                {
                    writer.Write(method.IsStatic ? "static " : string.Empty, true);
                    writer.Write($"{method.Name}(");

                    writer.WriteDelimited(method.Params,
                                          (p, w) =>
                    {
                        w.Write($"{p.Name}{(p.Type.Optional ? "?": "")}: ");
                        w.WriteTypeRef(p.Type);
                    }, ", ");

                    writer.Write("): ");
                    writer.WriteTypeRef(method.ReturnType);
                    writer.OpenBlock();

                    method.WriteBody(writer);

                    writer.CloseBlock();
                }

                writer.CloseBlock();
            });
        }
        public CodeSnippetWriter Build(IComplexTypeInfo typeInfo)
        {
            return(writer =>
            {
                writer.Write($"export interface ");
                writer.WriteTypeDec(typeInfo.Name, typeInfo.GenericTypeParams);
                writer.OpenBlock();
                foreach (var prop in typeInfo.Properties)
                {
                    writer.Write($"{prop.Name}{(prop.Type.Optional && UseQuestionMark ? "?" : "")}: ", true);
                    writer.WriteTypeRef(prop.Type);
                    if (prop.Type.Optional)
                    {
                        writer.Write(GetOptionalUnion());
                    }
                    writer.WriteLine(";", false);
                }

                foreach (var method in typeInfo.Methods)
                {
                    writer.Write(method.IsStatic ? "static " : string.Empty, true);
                    writer.Write($"{method.Name}(");
                    writer.WriteDelimited(method.Params,
                                          (p, w) =>
                    {
                        w.Write($"{p.Name}: ");
                        w.WriteTypeRef(p.Type);
                    }, ", ");

                    writer.Write("): ");
                    writer.WriteTypeRef(method.ReturnType);
                    writer.WriteLine(";", false);
                }

                writer.CloseBlock();
            });
        }
Exemple #4
0
        public void WriteClass(IComplexTypeInfo type)
        {
            var part = _options.ClassWriterFactory.Build(type);

            _parts.Add(part);
        }
Exemple #5
0
        public void WriteInterface(IComplexTypeInfo type)
        {
            var part = _options.InterfaceWriterFactory.Build(type);

            _parts.Add(part);
        }