Skip to content

Commit 8f836d4

Browse files
author
Steve Canny
committed
parfmt: add ParaFormat.page_break_before getter
1 parent 8ed7151 commit 8f836d4

File tree

4 files changed

+27
-0
lines changed

4 files changed

+27
-0
lines changed

docx/oxml/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,7 @@ def OxmlElement(nsptag_str, attrs=None, nsdecls=None):
142142
register_element_cls('w:keepLines', CT_OnOff)
143143
register_element_cls('w:keepNext', CT_OnOff)
144144
register_element_cls('w:p', CT_P)
145+
register_element_cls('w:pageBreakBefore', CT_OnOff)
145146
register_element_cls('w:pPr', CT_PPr)
146147
register_element_cls('w:pStyle', CT_String)
147148
register_element_cls('w:spacing', CT_Spacing)

docx/oxml/text/paragraph.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,7 @@ class CT_PPr(BaseOxmlElement):
119119
pStyle = ZeroOrOne('w:pStyle', successors=_tag_seq[1:])
120120
keepNext = ZeroOrOne('w:keepNext', successors=_tag_seq[2:])
121121
keepLines = ZeroOrOne('w:keepLines', successors=_tag_seq[3:])
122+
pageBreakBefore = ZeroOrOne('w:pageBreakBefore', successors=_tag_seq[4:])
122123
numPr = ZeroOrOne('w:numPr', successors=_tag_seq[7:])
123124
spacing = ZeroOrOne('w:spacing', successors=_tag_seq[22:])
124125
ind = ZeroOrOne('w:ind', successors=_tag_seq[23:])
@@ -228,6 +229,16 @@ def keepNext_val(self):
228229
return None
229230
return keepNext.val
230231

232+
@property
233+
def pageBreakBefore_val(self):
234+
"""
235+
The value of `pageBreakBefore/@val` or |None| if not present.
236+
"""
237+
pageBreakBefore = self.pageBreakBefore
238+
if pageBreakBefore is None:
239+
return None
240+
return pageBreakBefore.val
241+
231242
@property
232243
def spacing_after(self):
233244
"""

docx/text/paragraph.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -283,6 +283,18 @@ def line_spacing_rule(self, value):
283283
else:
284284
pPr.spacing_lineRule = value
285285

286+
@property
287+
def page_break_before(self):
288+
"""
289+
|True| if the paragraph should appear at the top of the page
290+
following the prior paragraph. |None| indicates its effective value
291+
is inherited from the style hierarchy.
292+
"""
293+
pPr = self._element.pPr
294+
if pPr is None:
295+
return None
296+
return pPr.pageBreakBefore_val
297+
286298
@property
287299
def right_indent(self):
288300
"""

tests/text/test_paragraph.py

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -534,6 +534,9 @@ def line_spacing_rule_set_fixture(self, request):
534534
('w:p', 'keep_with_next', None),
535535
('w:p/w:pPr/w:keepNext{w:val=1}', 'keep_with_next', True),
536536
('w:p/w:pPr/w:keepNext{w:val=false}', 'keep_with_next', False),
537+
('w:p', 'page_break_before', None),
538+
('w:p/w:pPr/w:pageBreakBefore', 'page_break_before', True),
539+
('w:p/w:pPr/w:pageBreakBefore{w:val=0}', 'page_break_before', False),
537540
])
538541
def on_off_get_fixture(self, request):
539542
p_cxml, prop_name, expected_value = request.param

0 commit comments

Comments
 (0)