Handle bullet lists

Signed-off-by: SimJeg <sjegou@nvidia.com>
This commit is contained in:
SimJeg 2025-03-31 16:27:50 +02:00
parent fcaad41a0a
commit 5b4464a741
2 changed files with 45 additions and 27 deletions

View File

@ -379,7 +379,7 @@ class MsWordDocumentBackend(DeclarativeDocumentBackend):
doc, doc,
numid, numid,
ilevel, ilevel,
text, paragraph_elements,
is_numbered, is_numbered,
) )
self.update_history(p_style_id, p_level, numid, ilevel) self.update_history(p_style_id, p_level, numid, ilevel)
@ -556,7 +556,7 @@ class MsWordDocumentBackend(DeclarativeDocumentBackend):
doc: DoclingDocument, doc: DoclingDocument,
numid: int, numid: int,
ilevel: int, ilevel: int,
text: str, elements: list[tuple[str, Formatting, str]],
is_numbered: bool = False, is_numbered: bool = False,
) -> None: ) -> None:
enum_marker = "" enum_marker = ""
@ -575,11 +575,16 @@ class MsWordDocumentBackend(DeclarativeDocumentBackend):
if is_numbered: if is_numbered:
enum_marker = str(self.listIter) + "." enum_marker = str(self.listIter) + "."
is_numbered = True is_numbered = True
inline_fmt = doc.add_group(label=GroupLabel.INLINE, parent=self.parents[level])
for text, format, hyperlink in elements:
doc.add_list_item( doc.add_list_item(
marker=enum_marker, marker=enum_marker,
enumerated=is_numbered, enumerated=is_numbered,
parent=self.parents[level], parent=inline_fmt,
text=text, text=text,
formatting=format,
hyperlink=hyperlink,
) )
elif ( elif (
@ -611,13 +616,17 @@ class MsWordDocumentBackend(DeclarativeDocumentBackend):
if is_numbered: if is_numbered:
enum_marker = str(self.listIter) + "." enum_marker = str(self.listIter) + "."
is_numbered = True is_numbered = True
inline_fmt = doc.add_group(label=GroupLabel.INLINE, parent=self.parents[self.level_at_new_list + ilevel])
for text, format, hyperlink in elements:
doc.add_list_item( doc.add_list_item(
marker=enum_marker, marker=enum_marker,
enumerated=is_numbered, enumerated=is_numbered,
parent=self.parents[self.level_at_new_list + ilevel], parent=inline_fmt,
text=text, text=text,
formatting=format,
hyperlink=hyperlink,
) )
elif ( elif (
self.prev_numid() == numid self.prev_numid() == numid
and self.level_at_new_list is not None and self.level_at_new_list is not None
@ -633,11 +642,15 @@ class MsWordDocumentBackend(DeclarativeDocumentBackend):
if is_numbered: if is_numbered:
enum_marker = str(self.listIter) + "." enum_marker = str(self.listIter) + "."
is_numbered = True is_numbered = True
inline_fmt = doc.add_group(label=GroupLabel.INLINE, parent=self.parents[self.level_at_new_list + ilevel])
for text, format, hyperlink in elements:
doc.add_list_item( doc.add_list_item(
marker=enum_marker, marker=enum_marker,
enumerated=is_numbered, enumerated=is_numbered,
parent=self.parents[self.level_at_new_list + ilevel], parent=inline_fmt,
text=text, text=text,
formatting=format,
hyperlink=hyperlink,
) )
self.listIter = 0 self.listIter = 0
@ -647,11 +660,16 @@ class MsWordDocumentBackend(DeclarativeDocumentBackend):
if is_numbered: if is_numbered:
enum_marker = str(self.listIter) + "." enum_marker = str(self.listIter) + "."
is_numbered = True is_numbered = True
inline_fmt = doc.add_group(label=GroupLabel.INLINE, parent=self.parents[level - 1])
for text, format, hyperlink in elements:
# Add the list item to the parent group
doc.add_list_item( doc.add_list_item(
marker=enum_marker, marker=enum_marker,
enumerated=is_numbered, enumerated=is_numbered,
parent=self.parents[level - 1], parent=inline_fmt,
text=text, text=text,
formatting=format,
hyperlink=hyperlink,
) )
return return