python类field_body()的实例源码

writer.py 文件源码 项目:sphinx-swagger 作者: dave-shawley 项目源码 文件源码 阅读 23 收藏 0 点赞 0 评论 0
def visit_field(self, node):
        """
        :param docutils.nodes.field node:
        """
        idx = node.first_child_matching_class(nodes.field_name)
        if idx is not None:
            name_node = node[idx]
            idx = node.first_child_matching_class(nodes.field_body)
            value_node = node[idx]
            name = name_node.astext()
            if name == 'Status Codes':
                visitor = StatusVisitor(self.document)
                value_node.walkabout(visitor)
                self.endpoint.add_response_codes(visitor.status_info)
            elif name == 'Request Headers':
                visitor = HeaderVisitor(self.document)
                value_node.walkabout(visitor)
                self.endpoint.add_request_headers(visitor.headers)
            elif name == 'Response Headers':
                visitor = HeaderVisitor(self.document)
                value_node.walkabout(visitor)
                self.endpoint.add_response_headers(visitor.headers)
            elif name == 'Parameters':
                visitor = ParameterVisitor(self.document,
                                           {'in': 'path', 'required': True})
                value_node.walkabout(visitor)
                self.endpoint.parameters.extend(visitor.parameters)
            elif name == 'Query Parameters':
                visitor = ParameterVisitor(self.document, {'in': 'query'})
                value_node.walkabout(visitor)
                self.endpoint.parameters.extend(visitor.parameters)
            elif name == 'Request JSON Object':
                visitor = ParameterVisitor(self.document)
                value_node.walkabout(visitor)
                self.endpoint.parameters.append({
                    'name': 'request-body', 'in': 'body', 'required': True,
                    'description': 'A serialized request body',
                    'schema': visitor.get_schema()})
            elif name == 'Request JSON Array of Objects':
                visitor = ParameterVisitor(self.document)
                value_node.walkabout(visitor)
                self.endpoint.parameters.append({
                    'name': 'request-body', 'in': 'body', 'required': True,
                    'schema': {'type': 'array', 'items': visitor.get_schema()}
                })
            elif name == 'Response JSON Object':
                visitor = ParameterVisitor(self.document)
                value_node.walkabout(visitor)
                self.endpoint.set_default_response_structure(visitor.parameters)
            elif name == 'Response JSON Array of Objects':
                visitor = ParameterVisitor(self.document)
                value_node.walkabout(visitor)
                self.endpoint.set_default_response_structure(
                    visitor.parameters, is_array=True)
            else:
                self.document.reporter.warning(
                    'unhandled field type: {}'.format(name), base_node=node)
            raise nodes.SkipChildren
ansibleautodoc.py 文件源码 项目:sphinxcontrib-ansibleautodoc 作者: shirou 项目源码 文件源码 阅读 22 收藏 0 点赞 0 评论 0
def make_node(self, lang='en'):
        if lang not in texts.keys():
            lang = 'en'
        arg_map = texts[lang]["arg_map"]
        task_title = texts[lang]["task_title"]
        module_title = texts[lang]["module_title"]

        module = ""
        module_args = []
        # first, search module 
        for arg, m in self.args.items():
            if arg not in arg_map.keys():
                module = arg
                module_args.append(m)

        item = nodes.admonition()
        title = nodes.title(text=self.name)
        item.append(title)

        for m in module_args:
            if isinstance(m, str):
                item.append(nodes.paragraph(text=m))
            else:
                mlist = []
                for k, v in m.items():
                    mlist.append("%s=%s" % (k, v))
                item.append(nodes.paragraph(text=" ".join(mlist)))

        field_list = nodes.field_list()
        field_list.append(self.make_arg(module_title, module))
        # second, create node tree
        for arg, txt in arg_map.items():
            if not txt:  # skip name etc...
                continue
            if arg not in self.args:
                continue
            value = self.args[arg]  # value of that task arg
            if isinstance(value, list):
                bl = nodes.bullet_list()
                for v in value:
                    body = nodes.emphasis(text=v)
                    bl.append(nodes.list_item('', body))
                name = nodes.field_name(text=txt)
                body = nodes.field_body()
                body.append(bl)
                field = nodes.field()
                field += [name, body]
                field_list.append(field)
            else:
                field_list.append(self.make_arg(txt, value))

        item.append(field_list)

        return item


问题


面经


文章

微信
公众号

扫码关注公众号