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(); }); }
public void WriteClass(IComplexTypeInfo type) { var part = _options.ClassWriterFactory.Build(type); _parts.Add(part); }
public void WriteInterface(IComplexTypeInfo type) { var part = _options.InterfaceWriterFactory.Build(type); _parts.Add(part); }