Fix handling of Headline hierarchy.

This commit is contained in:
Sergio Martínez Portela 2022-05-16 23:16:20 +02:00
parent eacbcce376
commit c87a50f365

View File

@ -1476,6 +1476,9 @@ def parse_headline(hl, doc, parent) -> Headline:
contents = parse_contents(hl["contents"]) contents = parse_contents(hl["contents"])
if not (isinstance(parent, OrgDoc) or depth > parent.depth):
raise AssertionError("Incorrectly parsed parent on `{}' > `{}'".format(parent.title, title))
headline = Headline( headline = Headline(
start_line=hl["linenum"], start_line=hl["linenum"],
depth=depth, depth=depth,
@ -1781,18 +1784,26 @@ class OrgDocReader:
"list_items": [], "list_items": [],
} }
while (depth - 2) > len(self.headline_hierarchy): while (depth - 1) > len(self.headline_hierarchy):
# Introduce structural headlines # Introduce structural headlines
self.headline_hierarchy.append(None) self.headline_hierarchy.append(None)
while depth < len(self.headline_hierarchy): while depth <= len(self.headline_hierarchy):
self.headline_hierarchy.pop() self.headline_hierarchy.pop()
if depth == 1: if depth == 1:
self.headlines.append(headline) self.headlines.append(headline)
else: else:
self.headline_hierarchy[-1]["children"].append(headline) parent_idx = len(self.headline_hierarchy) - 1
while self.headline_hierarchy[parent_idx] is None:
parent_idx -= 1
self.headline_hierarchy[parent_idx]["children"].append(headline)
self.headline_hierarchy.append(headline) self.headline_hierarchy.append(headline)
if all([hl is not None for hl in self.headline_hierarchy]):
if not ([ len(hl['orig'].group('stars')) for hl in self.headline_hierarchy ]
== list(range(1, len(self.headline_hierarchy) + 1))):
raise AssertionError('Error on Headline Hierarchy')
def add_list_item_line(self, linenum: int, match: re.Match) -> int: def add_list_item_line(self, linenum: int, match: re.Match) -> int:
li = ListItem( li = ListItem(
linenum, linenum,