Skip to content
Open
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
44 commits
Select commit Hold shift + click to select a range
b497d80
docs: document Bookmarks analysis
Nov 15, 2017
60d8e57
acpt: Add scenario for document.bookmarks
Aug 25, 2018
8dc7a3e
rfctr: blacken docs/conf.py
scanny Jul 13, 2019
afd1cc3
doc: add Document.bookmarks
Aug 25, 2018
e17e50d
acpt: add scenario for Bookmarks
Aug 31, 2018
3e09234
bmk: add Bookmarks.__len__()
scanny Sep 9, 2018
f4b2291
bmk: add Bookmarks._finder
scanny Sep 9, 2018
959b554
bmk: add _DocumentBookmarkFinder.bookmark_pairs
scanny Sep 9, 2018
3bb9b96
bmk: Add DocumentPart.iter_story_parts()
Dec 24, 2018
9930c27
opc: add Part.iter_parts_related_by()
Dec 24, 2018
b9c2ff3
pep8: fixes for latest version of flake8
Dec 26, 2018
c80383e
rfctr: upgrade mock helpers to autospec by default
Dec 26, 2018
9533c02
bmk: add _PartBookmarkFinder.iter_start_end_pairs()
Dec 27, 2018
a45bf20
bmk: Add _PartBookmarkFinder._iter_start_end_pairs()
Dec 27, 2018
e67fe26
bmk: add _PartBookmarkFinder._iter_starts()
Dec 27, 2018
13cb94c
bmk: add _PartBookmarkFinder._all_starts_and_ends
Dec 27, 2018
a5ad201
bmk: add _PartBookmarkFinder._name_already_used()
Dec 27, 2018
4838fb0
bmk: add _PartBookmarkFinder._names_so_far
Dec 27, 2018
d862e57
parts: add EndnotesPart
Dec 27, 2018
80a7ff4
parts: add FootnotesPart
Dec 27, 2018
425245c
bmk: add Bookmarks.__getitem__() and .__iter__()
Dec 28, 2018
ad44458
test: update tox and fix py3 failures
scanny Dec 28, 2018
794af7d
acpt: Add scenario for named bookmark access
Dec 29, 2018
745f5c8
bmk: Add Bookmarks.get()
Jan 6, 2019
06c6e8b
bmk: Add _Bookmark.name
Jul 14, 2019
13c3dac
bmk: Add _Bookmark.id
Jan 6, 2019
4c93f5d
acpt: add Document.start_bookmark() scenario
scanny Jul 14, 2019
4acb2e5
bmk: add Document.start_bookmark()
scanny Jul 14, 2019
aaf7987
blkcntnr: add BlockItemContainer.start_bookmark()
scanny Sep 2, 2019
e37e45b
blkcntnr: add BlockItemContainer._bookmarks
scanny Sep 2, 2019
f1d7396
bmk: add Bookmarks.__contains__()
scanny Sep 2, 2019
4b46473
bmk: add Bookmarks.next_id
scanny Sep 3, 2019
c46483b
rfctr: modernize selected feature files
scanny Sep 3, 2019
bc62189
acpt: add remaining start_bookmark() scenarios
scanny Sep 3, 2019
e140108
parts: add BaseStoryPart.bookmarks
scanny Sep 3, 2019
ff53136
acpt: add end_bookmark() scenarios
Sep 3, 2019
254804e
acpt: add end_bookmark() scenarios
Jan 16, 2020
96aede1
bmk: add Document.end_bookmark()
Sep 3, 2019
d900350
blkcntnr: add BlockItemContainer.end_bookmark()
Sep 3, 2019
ae8a224
acpt: add Paragraph.start_bookmark() and Paragraph.end_bookmark() sce…
Sep 5, 2019
ffd87ad
par: add Paragraph.start_bookmark()
Sep 5, 2019
89ef8b7
par: add Paragraph._bookmarks
Sep 7, 2019
e8b9aec
par: add Paragraph.end_bookmark()
Sep 5, 2019
57b6ffe
docs: Updated feature proposal
Sep 4, 2019
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
par: add Paragraph._bookmarks
  • Loading branch information
Benjamin Toornstra Benjamin T
Benjamin Toornstra authored and Benjamin T committed Jan 16, 2020
commit 89ef8b72cf8e19327323b05fb04862e63f54f3cf
6 changes: 5 additions & 1 deletion docx/text/paragraph.py
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ def alignment(self, value):
@lazyproperty
def _bookmarks(self):
"""Global |Bookmarks| object for overall document."""
raise NotImplementedError
return self.part.bookmarks

def clear(self):
"""
Expand All @@ -67,6 +67,10 @@ def clear(self):
self._p.clear_content()
return self

def end_bookmark(self, bookmark):
"""Closes supplied bookmark at the end of this paragraph."""
raise NotImplementedError

def insert_paragraph_before(self, text=None, style=None):
"""
Return a newly created paragraph, inserted directly before this
Expand Down
2 changes: 1 addition & 1 deletion features/par-paragraph.feature
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ Feature: Paragraph properties and methods
As a developer using python-docx
I need properties and methods on the Paragraph object

@wip

Scenario: Paragraph.start_bookmark()
Given a Paragraph object as paragraph
When I assign bookmark = paragraph.start_bookmark("Target")
Expand Down
20 changes: 19 additions & 1 deletion tests/text/test_paragraph.py
Original file line number Diff line number Diff line change
Expand Up @@ -11,11 +11,11 @@
from docx.oxml.text.paragraph import CT_P
from docx.oxml.text.run import CT_R
from docx.parts.document import DocumentPart
from docx.parts.hdrftr import FooterPart, HeaderPart
from docx.text.paragraph import Paragraph
from docx.text.parfmt import ParagraphFormat
from docx.text.run import Run
from docx.bookmark import _Bookmark, Bookmarks
from docx.blkcntnr import BlockItemContainer

from ..unitutil.cxml import element, xml
from ..unitutil.mock import (
Expand Down Expand Up @@ -93,6 +93,18 @@ def it_provides_access_to_its_paragraph_format(self, parfmt_fixture):
ParagraphFormat_.assert_called_once_with(paragraph._element)
assert paragraph_format is paragraph_format_

def it_provides_access_to_the_global_bookmarks_collection_to_help(
self, bookmarks_fixture, part_prop_, bookmarks_
):
parent_part_ = bookmarks_fixture
parent_part_.bookmarks = bookmarks_
part_prop_.return_value = parent_part_
blkcntnr = Paragraph(None, None)

bookmarks = blkcntnr._bookmarks

assert bookmarks is bookmarks_

def it_provides_access_to_the_runs_it_contains(self, runs_fixture):
paragraph, Run_, r_, r_2_, run_, run_2_ = runs_fixture
runs = paragraph.runs
Expand Down Expand Up @@ -176,6 +188,12 @@ def alignment_set_fixture(self, request):
expected_xml = xml(expected_cxml)
return paragraph, new_alignment_value, expected_xml

@pytest.fixture(params=[DocumentPart, HeaderPart, FooterPart])
def bookmarks_fixture(self, request):
PartCls = request.param
parent_part_ = instance_mock(request, PartCls)
return parent_part_

@pytest.fixture(
params=[
("w:p", "w:p"),
Expand Down