Skip to content

Commit e05d002

Browse files
committed
The end_bookmark now takes the Bookmark object as input.
1 parent 2e50200 commit e05d002

File tree

5 files changed

+36
-35
lines changed

5 files changed

+36
-35
lines changed

docx/document.py

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -224,14 +224,13 @@ def add_bookmarkStart(self, name):
224224
bookmarkStart = self._body._add_bookmarkStart()
225225
bookmarkStart.name = name
226226
bookmarkStart.bmrk_id = bookmarkStart._next_id
227-
return Bookmark(bookmarkStart)
227+
return bookmarkStart
228228

229-
def add_bookmarkEnd(self, name=None):
230-
229+
def add_bookmarkEnd(self, bookmark=None):
231230
bookmarkEnd = self._body._add_bookmarkEnd()
232-
if name is not None:
233-
bookmarkStart_id = bookmarkEnd.match_bookmarkstart(name)
231+
if bookmark is None:
232+
bookmarkEnd.bmrk_id = bookmarkEnd._next_id
234233
else:
235-
bookmarkStart_id = bookmarkEnd._next_id
236-
bookmarkEnd.bmrk_id = bookmarkStart_id
237-
return Bookmark(bookmarkEnd)
234+
bookmarkEnd.bmrk_id = bookmark._id
235+
return bookmarkEnd
236+

docx/oxml/bookmark.py

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,13 @@ def _next_id(self):
3535
root = self.getroottree().getroot()
3636
return str(len(root.xpath('.//w:bookmarkStart')))
3737

38-
def match_bookmarkstart(self, name):
39-
"""Returns `w:bookmarkStart` element having matching name, None if not present."""
40-
root_element = self.getroottree().getroot()
41-
matching_bookmarkStarts = root_element.xpath(
42-
'.//w:bookmarkStart[@w:name=\'%s\']' % name
43-
)
44-
if not matching_bookmarkStarts:
45-
raise ValueError('Bookmark name not found')
46-
return None
47-
return matching_bookmarkStarts[0].bmrk_id
38+
# def match_bookmarkstart(self, name):
39+
# """Returns `w:bookmarkStart` element having matching name, None if not present."""
40+
# root_element = self.getroottree().getroot()
41+
# matching_bookmarkStarts = root_element.xpath(
42+
# './/w:bookmarkStart[@w:name=\'%s\']' % name
43+
# )
44+
# if not matching_bookmarkStarts:
45+
# raise ValueError('Bookmark name not found')
46+
# return None
47+
# return matching_bookmarkStarts[0].bmrk_id

docx/oxml/text/paragraph.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -35,16 +35,15 @@ def add_bookmarkStart(self, name):
3535
bookmarkStart = self._add_bookmarkStart()
3636
bookmarkStart.name = name
3737
bookmarkStart.bmrk_id = bookmarkStart._next_id
38-
return Bookmark(bookmarkStart)
38+
return bookmarkStart
3939

40-
def add_bookmarkEnd(self, name=None):
40+
def add_bookmarkEnd(self, bookmark=None):
4141
bookmarkEnd = self._add_bookmarkEnd()
42-
if name is not None:
43-
bookmarkStart_id = bookmarkEnd.match_bookmarkstart(name)
42+
if bookmark is None:
43+
bookmarkEnd.bmrk_id = bookmarkEnd._next_id
4444
else:
45-
bookmarkStart_id = bookmarkEnd._next_id
46-
bookmarkEnd.bmrk_id = bookmarkStart_id
47-
return Bookmark(bookmarkEnd)
45+
bookmarkEnd.bmrk_id = bookmark._id
46+
return bookmarkEnd
4847

4948
@property
5049
def alignment(self):

docx/oxml/text/run.py

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -40,16 +40,15 @@ def add_bookmarkStart(self, name):
4040
bookmarkStart = self._add_bookmarkStart()
4141
bookmarkStart.name = name
4242
bookmarkStart.bmrk_id = bookmarkStart._next_id
43-
return Bookmark(bookmarkStart)
43+
return bookmarkStart
4444

45-
def add_bookmarkEnd(self, name=None):
45+
def add_bookmarkEnd(self, bookmark=None):
4646
bookmarkEnd = self._add_bookmarkEnd()
47-
if name is not None:
48-
bookmarkStart_id = bookmarkEnd.match_bookmarkstart(name)
47+
if bookmark is None:
48+
bookmarkEnd.bmrk_id = bookmarkEnd._next_id
4949
else:
50-
bookmarkStart_id = bookmarkEnd._next_id
51-
bookmarkEnd.bmrk_id = bookmarkStart_id
52-
return Bookmark(bookmarkEnd)
50+
bookmarkEnd.bmrk_id = bookmark._id
51+
return bookmarkEnd
5352

5453
def add_t(self, text):
5554
"""

docx/text/bookmarks.py

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ class Bookmark(ElementProxy):
5151
def __init__(self, doc_element):
5252
super(Bookmark, self).__init__(doc_element)
5353
self._element = doc_element
54-
54+
5555
@property
5656
def _id(self):
5757
return self._element.bmrk_id
@@ -67,8 +67,12 @@ def start_bookmark(self, name):
6767
bookmarkstart = self._element.add_bookmarkStart(name)
6868
return Bookmark(bookmarkstart)
6969

70-
def end_bookmark(self, name=None):
70+
def end_bookmark(self, bookmark=None):
7171
if hasattr(self, '_body'):
7272
self._element = self._body
73-
bookmarkend = self._element.add_bookmarkEnd(name)
73+
bookmarkend = self._element.add_bookmarkEnd(bookmark)
74+
if bookmark is None:
75+
bookmarkend._next_id
76+
else:
77+
bookmarkend._id = bookmark._id
7478
return Bookmark(bookmarkend)

0 commit comments

Comments
 (0)