Skip to content

Commit ea6a195

Browse files
author
Steve Canny
committed
parfmt: add ParagraphFormat.keep_together setter
1 parent 86741a1 commit ea6a195

File tree

3 files changed

+29
-0
lines changed

3 files changed

+29
-0
lines changed

docx/oxml/text/paragraph.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -220,6 +220,13 @@ def keepLines_val(self):
220220
return None
221221
return keepLines.val
222222

223+
@keepLines_val.setter
224+
def keepLines_val(self, value):
225+
if value is None:
226+
self._remove_keepLines()
227+
else:
228+
self.get_or_add_keepLines().val = value
229+
223230
@property
224231
def keepNext_val(self):
225232
"""

docx/text/paragraph.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,10 @@ def keep_together(self):
189189
return None
190190
return pPr.keepLines_val
191191

192+
@keep_together.setter
193+
def keep_together(self, value):
194+
self._element.get_or_add_pPr().keepLines_val = value
195+
192196
@property
193197
def keep_with_next(self):
194198
"""

tests/text/test_paragraph.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -365,6 +365,11 @@ def it_knows_its_on_off_prop_values(self, on_off_get_fixture):
365365
paragraph_format, prop_name, expected_value = on_off_get_fixture
366366
assert getattr(paragraph_format, prop_name) == expected_value
367367

368+
def it_can_change_its_on_off_props(self, on_off_set_fixture):
369+
paragraph_format, prop_name, value, expected_xml = on_off_set_fixture
370+
setattr(paragraph_format, prop_name, value)
371+
assert paragraph_format._element.xml == expected_xml
372+
368373
# fixtures -------------------------------------------------------
369374

370375
@pytest.fixture(params=[
@@ -546,6 +551,19 @@ def on_off_get_fixture(self, request):
546551
paragraph_format = ParagraphFormat(element(p_cxml))
547552
return paragraph_format, prop_name, expected_value
548553

554+
@pytest.fixture(params=[
555+
('w:p', 'keep_together', True, 'w:p/w:pPr/w:keepLines'),
556+
('w:p/w:pPr/w:keepLines', 'keep_together', False,
557+
'w:p/w:pPr/w:keepLines{w:val=0}'),
558+
('w:p/w:pPr/w:keepLines{w:val=0}', 'keep_together', None,
559+
'w:p/w:pPr'),
560+
])
561+
def on_off_set_fixture(self, request):
562+
p_cxml, prop_name, value, expected_cxml = request.param
563+
paragraph_format = ParagraphFormat(element(p_cxml))
564+
expected_xml = xml(expected_cxml)
565+
return paragraph_format, prop_name, value, expected_xml
566+
549567
@pytest.fixture(params=[
550568
('w:p', None),
551569
('w:p/w:pPr', None),

0 commit comments

Comments
 (0)