public void Constructor(PythonFileBuilder builder) { ctr.StringRepr(builder); builder.AddIndent(); builder.LineBreak(); if (fields.Count == 0 && events.Count == 0) { builder.Append("pass"); builder.RemoveIndent(); builder.LineBreak(); return; } foreach (PythonField field in fields) { field.StringRepr(builder); builder.LineBreak(); } foreach (PythonEvent ev in events) { ev.StringRepr(builder); builder.LineBreak(); } builder.RemoveIndent(); builder.LineBreak(); }
public override void StringRepr(PythonFileBuilder builder) { MemberDocumentation doc = parent.xmlDoc?.GetDocs(method); builder.Append($"def {method.Name}{GenericArguments()}({Args()}):"); builder.AddIndent(); builder.LineBreak(); //generate doc string for type hints if (doc != null || method.GetParameters().Length != 0) { builder.Append("\"\"\""); builder.LineBreak(); } if (doc != null) { MemberDocExporter exporter = new PythonDocCommentExporter(doc); string docstring = exporter.Export(); string line; StringReader reader = new StringReader(docstring); while ((line = reader.ReadLine()) != null) { line = line.Trim(); builder.Append(line); builder.LineBreak(); } } if (method.GetParameters().Length != 0) { foreach (ParameterInfo param in method.GetParameters()) { Type paramType = param.ParameterType; builder.Append($":type {param.Name}: {paramType.Namespace}.{Utils.CleanupNamePython(paramType)}"); builder.LineBreak(); } if (method.ReturnType != typeof(void)) { builder.Append($":rtype: {method.ReturnType.Namespace}.{Utils.CleanupNamePython(method.ReturnType)}"); builder.LineBreak(); } } if (doc != null || method.GetParameters().Length != 0) { builder.Append("\"\"\""); builder.LineBreak(); } builder.Append("pass"); builder.RemoveIndent(); }
public string StringRepr() { PythonFileBuilder builder = new PythonFileBuilder(); //this creates an import line above each python class, //there might be duplicate import line after merging all the classes //in a single file but since it'll never never anyway Imports(builder); builder.Append($"class {Utils.CleanupNamePython(className)}({ParentClasses()}):"); builder.AddIndent(); builder.LineBreak(); StaticFields(builder); StaticMethods(builder); Constructor(builder); Methods(builder); return(builder.ToString()); }