diff --git a/doc/arm/_ext/iscconf.py b/doc/arm/_ext/iscconf.py index 022d303de0..99f6b533aa 100644 --- a/doc/arm/_ext/iscconf.py +++ b/doc/arm/_ext/iscconf.py @@ -173,8 +173,9 @@ def domain_factory(domainname, domainlabel, todolist, grammar): else: separator = "" paths = "" + subgrammar = grammar_grp[0].subgrammar grammar_txt = ( - self.isc_name + subgrammar.get("_pprint_name", self.isc_name) + " " + checkgrammar.pformat_grammar(grammar_grp[0].subgrammar, level=1) ) diff --git a/doc/arm/_ext/mergegrammar.py b/doc/arm/_ext/mergegrammar.py index 75146f7dc4..966d1c3bc9 100644 --- a/doc/arm/_ext/mergegrammar.py +++ b/doc/arm/_ext/mergegrammar.py @@ -29,8 +29,9 @@ def read_zone(): assert len(zonegrammar) == 1 assert "zone" in zonegrammar zone_grammars[zone_type] = zonegrammar["zone"] + zone_grammars[zone_type]["_pprint_name"] = "zone" - return {"zone": {"_mapbody": zone_grammars}} + return {"zone": {"_mapbody": zone_grammars, "_ignore_this_level": True}} def read_main(): diff --git a/doc/misc/checkgrammar.py b/doc/misc/checkgrammar.py index 57f4c8ede5..8483b2edaf 100644 --- a/doc/misc/checkgrammar.py +++ b/doc/misc/checkgrammar.py @@ -113,19 +113,25 @@ def pformat_grammar(node, level=1): # a nested map out = "" indent = level * "\t" - if "_id" in node: - out += node["_id"] + " " - out += "{\n" + if not node.get("_ignore_this_level"): + if "_id" in node: + out += node["_id"] + " " + out += "{\n" - for key in node["_mapbody"]: - out += f"{indent}{key}" - inner_grammar = pformat_grammar(node["_mapbody"][key], level=level + 1) + for key, subnode in node["_mapbody"].items(): + if not subnode.get("_ignore_this_level"): + out += f"{indent}{subnode.get('_pprint_name', key)}" + inner_grammar = pformat_grammar(node["_mapbody"][key], level=level + 1) + else: # act as if we were not in a map + inner_grammar = pformat_grammar(node["_mapbody"][key], level=level) if inner_grammar[0] != ";": # we _did_ find some arguments out += " " out += inner_grammar - out += indent[:-1] + "};" # unindent the closing bracket - if "_flags" in node: - out += " // " + ", ".join(node["_flags"]) + + if not node.get("_ignore_this_level"): + out += indent[:-1] + "};" # unindent the closing bracket + if "_flags" in node: + out += " // " + ", ".join(node["_flags"]) return out + "\n"