From c420beb32c89f17822fb0e25d23db3f25ebd9af9 Mon Sep 17 00:00:00 2001 From: Martin Thoma Date: Tue, 12 Jul 2022 08:20:59 +0200 Subject: [PATCH] MAINT: Use add_bookmark_destination in add_bookmark (#1100) Reduce code duplication See #1098 --- PyPDF2/_writer.py | 20 ++++++-------------- 1 file changed, 6 insertions(+), 14 deletions(-) diff --git a/PyPDF2/_writer.py b/PyPDF2/_writer.py index 463aad764..a0b84bae0 100644 --- a/PyPDF2/_writer.py +++ b/PyPDF2/_writer.py @@ -1055,7 +1055,9 @@ def getNamedDestRoot(self) -> ArrayObject: # pragma: no cover return self.get_named_dest_root() def add_bookmark_destination( - self, dest: Union[PageObject, TreeObject], parent: Optional[TreeObject] = None + self, + dest: Union[PageObject, TreeObject], + parent: Union[None, TreeObject, IndirectObject] = None, ) -> IndirectObject: dest_ref = self._add_object(dest) @@ -1153,21 +1155,11 @@ def add_bookmark( } ) action_ref = self._add_object(action) - - outline_ref = self.get_outline_root() - - if parent is None: - parent = outline_ref - bookmark = _create_bookmark(action_ref, title, color, italic, bold) - bookmark_ref = self._add_object(bookmark) - - assert parent is not None, "hint for mypy" - parent_obj = cast(TreeObject, parent.get_object()) - parent_obj.add_child(bookmark_ref, self) - - return bookmark_ref + if parent is None: + parent = self.get_outline_root() + return self.add_bookmark_destination(bookmark, parent) def addBookmark( self,