Mauro Carvalho Chehab <mchehab+huawei@xxxxxxxxxx> writes: > Instead of printing line numbers from the temp converted ReST > file, get them from the original source. > > Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@xxxxxxxxxx> This doesn't seem to work. This is what I get when I change line 14 of rt-neigh.yaml diff --git a/Documentation/netlink/specs/rt-neigh.yaml b/Documentation/netlink/specs/rt-neigh.yaml index e9cba164e3d1..937d2563f151 100644 --- a/Documentation/netlink/specs/rt-neigh.yaml +++ b/Documentation/netlink/specs/rt-neigh.yaml @@ -11,6 +11,7 @@ doc: definitions: - name: ndmsg + doc: ".. bogus::" type: struct members: - /home/donaldh/docs-next/Documentation/netlink/specs/rt-neigh.yaml:165: ERROR: Unknown directive type "bogus". .. bogus:: [docutils] > --- > Documentation/sphinx/parser_yaml.py | 12 ++++++++++-- > tools/net/ynl/pyynl/lib/doc_generator.py | 16 ++++++++++++---- > 2 files changed, 22 insertions(+), 6 deletions(-) > > diff --git a/Documentation/sphinx/parser_yaml.py b/Documentation/sphinx/parser_yaml.py > index fa2e6da17617..8288e2ff7c7c 100755 > --- a/Documentation/sphinx/parser_yaml.py > +++ b/Documentation/sphinx/parser_yaml.py > @@ -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) I expect this would need to be source=document.current_source, offset=lineoffset > > rst_parser = RSTParser() > rst_parser.parse('\n'.join(result), document) But anyway this discards any line information by just concatenating the lines together again. > diff --git a/tools/net/ynl/pyynl/lib/doc_generator.py b/tools/net/ynl/pyynl/lib/doc_generator.py > index 658759a527a6..403abf1a2eda 100644 > --- a/tools/net/ynl/pyynl/lib/doc_generator.py > +++ b/tools/net/ynl/pyynl/lib/doc_generator.py > @@ -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