Exemple #1
0
        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();
        }
Exemple #2
0
        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();
        }
Exemple #3
0
        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());
        }