Пример #1
0
 def __init__(self, m, name, sinfo):
     m.stmt("/* structure")
     cm = Module()
     m.stmt(cm)
     cm.stmt(name)
     self.cm_map = {sinfo["jsonname"]: cm}
     m.stmt("*/")
Пример #2
0
 def __init__(self, m, name, sinfo):
     m.stmt("/* structure")
     cm = Module()
     m.stmt(cm)
     cm.stmt(name)
     self.cm_map = {sinfo["jsonname"]: cm}
     m.stmt("*/")
Пример #3
0
def json2swagger(
    *,
    files,
    dst: str,
    output_format: str,
    name: str,
    detector,
    emitter,
    annotate,
    emit,
    with_minimap: bool,
    without_example: bool
):
    from prestring import Module
    from dictknife import DictWalker

    if annotate is not None:
        annotate = loading.loadfile(annotate)
    else:
        annotate = {}

    ns = "dictknife.swaggerknife.json2swagger"
    detector = import_symbol(detector, ns=ns)()
    emitter = import_symbol(emitter, ns=ns)(annotate)

    info = None
    for src in files:
        data = loading.loadfile(src)
        info = detector.detect(data, name, info=info)

    if emit == "info":
        loading.dumpfile(info, filename=dst)
    else:
        m = Module(indent="  ")
        m.stmt(name)
        emitter.emit(info, m)
        if with_minimap:
            print("# minimap ###")
            print("# *", end="")
            print("\n# ".join(str(m).split("\n")))

        if without_example:
            for _, d in DictWalker(["example"]).walk(emitter.doc):
                d.pop("example")
        loading.dumpfile(emitter.doc, filename=dst, format=output_format)
Пример #4
0
def main():
    import argparse
    parser = argparse.ArgumentParser()
    parser.add_argument("--name", type=str, default="top")
    parser.add_argument("--annotations",
                        type=argparse.FileType('r'),
                        default=None)
    parser.add_argument("--show-minimap", action="store_true")
    parser.add_argument("--logging",
                        default="INFO",
                        choices=sorted(logging._nameToLevel.keys()))
    parser.add_argument("--emit", default="schema", choices=["schema", "info"])
    parser.add_argument("--dst", type=argparse.FileType('w'), default=None)
    parser.add_argument("src",
                        type=argparse.FileType('r'),
                        default=sys.stdin,
                        nargs="?")

    args = parser.parse_args()

    logging.basicConfig(level=args.logging)
    annotations = {}
    if args.annotations:
        annotations = loading.load(args.annotations)

    detector = Detector()
    emitter = Emitter(annotations)

    loading.setup()
    data = loading.load(args.src)
    info = detector.detect(data, args.name)

    if args.emit == "info":
        loading.dumpfile(info, filename=args.dst)
    else:
        m = Module(indent="  ")
        m.stmt(args.name)
        emitter.emit(info, m)
        if args.show_minimap:
            print("# minimap ###")
            print("# *", end="")
            print("\n# ".join(str(m).split("\n")))
        loading.dumpfile(emitter.doc, filename=args.dst)
Пример #5
0
from prestring import Module

sm = Module()
with sm.scope():
    sm.stmt("- foo")
    sm.stmt("- bar")
    sm.stmt("- boo")

m = Module()
m.stmt("// start")
with m.scope():
    m.stmt("itemize")
    m.submodule(sm, newline=False)
m.stmt("// end")
print(m)
Пример #6
0
    parser.add_argument("--logging", default="INFO", choices=list(logging._nameToLevel.keys()))
    parser.add_argument("--emit", default="schema", choices=["schema", "info"])
    parser.add_argument("--dst", type=argparse.FileType('w'), default=None)
    parser.add_argument("src", type=argparse.FileType('r'))

    args = parser.parse_args()

    logging.basicConfig(level=args.logging)
    annotations = {}
    if args.annotations:
        annotations = loading.load(args.annotations)

    detector = Detector()
    emitter = Emitter(annotations)

    loading.setup()
    data = loading.load(args.src)
    info = detector.detect(data, args.name)

    if args.emit == "info":
        loading.dumpfile(info, filename=args.dst)
    else:
        m = Module(indent="  ")
        m.stmt(args.name)
        emitter.emit(info, m)
        if args.show_minimap:
            print("# minimap ###")
            print("# *", end="")
            print("\n# ".join(str(m).split("\n")))
        loading.dumpfile(emitter.doc, filename=args.dst)
Пример #7
0
from prestring import Module

m = Module()
m.stmt("// start")
with m.scope():
    m.stmt("itemize")
    sm = m.submodule("")
m.stmt("// end")

with sm.scope():
    sm.stmt("- foo")
    sm.stmt("- bar")
    sm.stmt("- boo")

print(m)
Пример #8
0
def emit_internal(m: Module) -> None:
    with m.scope():
        m.stmt("- foo")
        m.stmt("- bar")
        m.stmt("- boo")
Пример #9
0
from prestring import Module

m = Module()
m.stmt("// start")
sm = m.submodule("")
m.stmt("// end")

with sm.scope():
    sm.stmt("- foo")
    sm.stmt("- bar")
    sm.stmt("- boo")

print(m)
Пример #10
0
    def view_docstring(self, fulldata, d, rename_dict=rename_dict):
        if "parameters" not in d:
            return None
        parameters = defaultdict(list)
        for p in d["parameters"]:
            p = self.resolve_ref(fulldata, p)
            parameters[p["in"]].append(p)

        # "query", "header", "path", "formData" or "body"
        m = Module()
        body = parameters.pop("body", None)
        for name, vs in parameters.items():
            pyramid_name = rename_dict.get(name) or name
            m.stmt(pyramid_name)
            m.stmt("")
            with m.scope():
                for v in vs:
                    name = v.get("name", "")
                    description = v.get("description", "-")
                    if description:
                        description = "  {}".format(description)

                    extra = v.copy()
                    extra.pop("in", None)
                    extra.pop("name", None)
                    extra.pop("description", None)
                    if extra:
                        extra_string = "  `{}`".format(json.dumps(extra))
                    else:
                        extra_string = ""
                    m.stmt("* {name!r}{description}{extra}".format(
                        name=name, description=description,
                        extra=extra_string))

        if body:
            m.stmt("")
            m.stmt(rename_dict["body"])
            m.stmt("\n```")
            with m.scope():
                schema = self.resolve_ref(fulldata, body[0]["schema"])
                json_str = json.dumps(schema, ensure_ascii=False, indent=2)
                for line in json_str.split("\n"):
                    m.stmt(line)
            m.stmt("```")
        return str(m)
Пример #11
0
                        choices=list(logging._nameToLevel.keys()))
    parser.add_argument("--emit", default="schema", choices=["schema", "info"])
    parser.add_argument("--dst", type=argparse.FileType('w'), default=None)
    parser.add_argument("src", type=argparse.FileType('r'))

    args = parser.parse_args()

    logging.basicConfig(level=args.logging)
    annotations = {}
    if args.annotations:
        annotations = loading.load(args.annotations)

    detector = Detector()
    emitter = Emitter(annotations)

    loading.setup()
    data = loading.load(args.src)
    info = detector.detect(data, args.name)

    if args.emit == "info":
        loading.dumpfile(info, filename=args.dst)
    else:
        m = Module(indent="  ")
        m.stmt(args.name)
        emitter.emit(info, m)
        if args.show_minimap:
            print("# minimap ###")
            print("# *", end="")
            print("\n# ".join(str(m).split("\n")))
        loading.dumpfile(emitter.doc, filename=args.dst)