Commit 0b24dfdd authored by Mauro Carvalho Chehab's avatar Mauro Carvalho Chehab
Browse files

docs: parser_yaml.py: add support for line numbers from the parser



Instead of printing line numbers from the temp converted ReST
file, get them from the original source.

Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent ad06a878
Loading
Loading
Loading
Loading
+10 −2
Original line number Diff line number Diff line
@@ -54,6 +54,8 @@ class YamlParser(Parser):

    netlink_parser = YnlDocGenerator()

    re_lineno = re.compile(r"\.\. LINENO ([0-9]+)$")

    def rst_parse(self, inputstring, document, msg):
        """
        Receives a ReST content that was previously converted by the
@@ -66,8 +68,14 @@ class YamlParser(Parser):

        try:
            # Parse message with RSTParser
            for i, line in enumerate(msg.split('\n')):
                result.append(line, document.current_source, i)
            lineoffset = 0;
            for line in msg.split('\n'):
                match = self.re_lineno.match(line)
                if match:
                    lineoffset = int(match.group(1))
                    continue

                result.append(line, document.current_source, lineoffset)

            rst_parser = RSTParser()
            rst_parser.parse('\n'.join(result), document)
+12 −4
Original line number Diff line number Diff line
@@ -158,9 +158,11 @@ class YnlDocGenerator:
    def parse_do(self, do_dict: Dict[str, Any], level: int = 0) -> str:
        """Parse 'do' section and return a formatted string"""
        lines = []
        if LINE_STR in do_dict:
            lines.append(self.fmt.rst_lineno(do_dict[LINE_STR]))

        for key in do_dict.keys():
            if key == LINE_STR:
                lines.append(self.fmt.rst_lineno(do_dict[key]))
                continue
            lines.append(self.fmt.rst_paragraph(self.fmt.bold(key), level + 1))
            if key in ['request', 'reply']:
@@ -187,13 +189,15 @@ class YnlDocGenerator:
        lines = []

        for operation in operations:
            if LINE_STR in operation:
                lines.append(self.fmt.rst_lineno(operation[LINE_STR]))

            lines.append(self.fmt.rst_section(namespace, 'operation',
                                              operation["name"]))
            lines.append(self.fmt.rst_paragraph(operation["doc"]) + "\n")

            for key in operation.keys():
                if key == LINE_STR:
                    lines.append(self.fmt.rst_lineno(operation[key]))
                    continue

                if key in preprocessed:
@@ -253,10 +257,12 @@ class YnlDocGenerator:
        lines = []

        for definition in defs:
            if LINE_STR in definition:
                lines.append(self.fmt.rst_lineno(definition[LINE_STR]))

            lines.append(self.fmt.rst_section(namespace, 'definition', definition["name"]))
            for k in definition.keys():
                if k == LINE_STR:
                    lines.append(self.fmt.rst_lineno(definition[k]))
                    continue
                if k in preprocessed + ignored:
                    continue
@@ -284,6 +290,9 @@ class YnlDocGenerator:
            lines.append(self.fmt.rst_section(namespace, 'attribute-set',
                                              entry["name"]))
            for attr in entry["attributes"]:
                if LINE_STR in attr:
                    lines.append(self.fmt.rst_lineno(attr[LINE_STR]))

                type_ = attr.get("type")
                attr_line = attr["name"]
                if type_:
@@ -294,7 +303,6 @@ class YnlDocGenerator:

                for k in attr.keys():
                    if k == LINE_STR:
                        lines.append(self.fmt.rst_lineno(attr[k]))
                        continue
                    if k in preprocessed + ignored:
                        continue