aboutsummaryrefslogtreecommitdiff
path: root/tools/net/ynl/ynl-gen-rst.py
diff options
context:
space:
mode:
Diffstat (limited to 'tools/net/ynl/ynl-gen-rst.py')
-rwxr-xr-xtools/net/ynl/ynl-gen-rst.py31
1 files changed, 27 insertions, 4 deletions
diff --git a/tools/net/ynl/ynl-gen-rst.py b/tools/net/ynl/ynl-gen-rst.py
index 8c62e040df5d..262d88f88696 100755
--- a/tools/net/ynl/ynl-gen-rst.py
+++ b/tools/net/ynl/ynl-gen-rst.py
@@ -69,7 +69,7 @@ def rst_paragraph(paragraph: str, level: int = 0) -> str:
def rst_bullet(item: str, level: int = 0) -> str:
"""Return a formatted a bullet"""
- return headroom(level) + f" - {item}"
+ return headroom(level) + f"- {item}"
def rst_subsection(title: str) -> str:
@@ -240,7 +240,7 @@ def parse_attr_sets(entries: List[Dict[str, Any]]) -> str:
lines.append(rst_section(entry["name"]))
for attr in entry["attributes"]:
type_ = attr.get("type")
- attr_line = bold(attr["name"])
+ attr_line = attr["name"]
if type_:
# Add the attribute type in the same line
attr_line += f" ({inline(type_)})"
@@ -250,7 +250,25 @@ def parse_attr_sets(entries: List[Dict[str, Any]]) -> str:
for k in attr.keys():
if k in preprocessed + ignored:
continue
- lines.append(rst_fields(k, sanitize(attr[k]), 2))
+ lines.append(rst_fields(k, sanitize(attr[k]), 0))
+ lines.append("\n")
+
+ return "\n".join(lines)
+
+
+def parse_sub_messages(entries: List[Dict[str, Any]]) -> str:
+ """Parse sub-message definitions"""
+ lines = []
+
+ for entry in entries:
+ lines.append(rst_section(entry["name"]))
+ for fmt in entry["formats"]:
+ value = fmt["value"]
+
+ lines.append(rst_bullet(bold(value)))
+ for attr in ['fixed-header', 'attribute-set']:
+ if attr in fmt:
+ lines.append(rst_fields(attr, fmt[attr], 1))
lines.append("\n")
return "\n".join(lines)
@@ -292,6 +310,11 @@ def parse_yaml(obj: Dict[str, Any]) -> str:
lines.append(rst_subtitle("Attribute sets"))
lines.append(parse_attr_sets(obj["attribute-sets"]))
+ # Sub-messages
+ if "sub-messages" in obj:
+ lines.append(rst_subtitle("Sub-messages"))
+ lines.append(parse_sub_messages(obj["sub-messages"]))
+
return "\n".join(lines)
@@ -360,7 +383,7 @@ def generate_main_index_rst(output: str) -> None:
index_dir = os.path.dirname(output)
logging.debug("Looking for .rst files in %s", index_dir)
- for filename in os.listdir(index_dir):
+ for filename in sorted(os.listdir(index_dir)):
if not filename.endswith(".rst") or filename == "index.rst":
continue
lines.append(f" {filename.replace('.rst', '')}\n")