Skip to content

Commit

Permalink
para: add Paragraph.alignment setter
Browse files Browse the repository at this point in the history
  • Loading branch information
Steve Canny committed Jun 27, 2014
1 parent 1375dc9 commit 25abe5b
Show file tree
Hide file tree
Showing 4 changed files with 47 additions and 1 deletion.
13 changes: 13 additions & 0 deletions docx/oxml/text.py
Original file line number Diff line number Diff line change
Expand Up @@ -59,6 +59,11 @@ def alignment(self):
return None
return pPr.alignment

@alignment.setter
def alignment(self, value):
pPr = self.get_or_add_pPr()
pPr.alignment = value

def clear_content(self):
"""
Remove all child elements, except the ``<w:pPr>`` element if present.
Expand Down Expand Up @@ -132,6 +137,14 @@ def alignment(self):
return None
return jc.val

@alignment.setter
def alignment(self, value):
if value is None:
self._remove_jc()
return
jc = self.get_or_add_jc()
jc.val = value

@property
def style(self):
"""
Expand Down
4 changes: 4 additions & 0 deletions docx/text.py
Original file line number Diff line number Diff line change
Expand Up @@ -86,6 +86,10 @@ def alignment(self):
"""
return self._p.alignment

@alignment.setter
def alignment(self, value):
self._p.alignment = value

def clear(self):
"""
Return this same paragraph after removing all its content.
Expand Down
1 change: 0 additions & 1 deletion features/par-alignment-prop.feature
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ Feature: Get or set paragraph alignment
I need a read/write alignment property on paragraph objects


@wip
Scenario Outline: Get paragraph alignment
Given a paragraph having <align-type> alignment
Then the paragraph alignment property value is <align-value>
Expand Down
30 changes: 30 additions & 0 deletions tests/test_text.py
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,11 @@ def it_knows_its_alignment_value(self, alignment_get_fixture):
paragraph, expected_value = alignment_get_fixture
assert paragraph.alignment == expected_value

def it_can_change_its_alignment_value(self, alignment_set_fixture):
paragraph, value, expected_xml = alignment_set_fixture
paragraph.alignment = value
assert paragraph._p.xml == expected_xml

def it_knows_its_paragraph_style(self):
cases = (
(Mock(name='p_elm', style='foobar'), 'foobar'),
Expand Down Expand Up @@ -120,6 +125,31 @@ def alignment_get_fixture(self, request):
paragraph = Paragraph(p)
return paragraph, expected_alignment_value

@pytest.fixture(params=[
('left', WD_ALIGN_PARAGRAPH.CENTER, 'center'),
('left', None, None),
(None, WD_ALIGN_PARAGRAPH.LEFT, 'left'),
(None, None, None),
])
def alignment_set_fixture(self, request):
initial_jc_val, new_alignment_value, expected_jc_val = request.param
# paragraph --------------------
p_bldr = a_p().with_nsdecls()
if initial_jc_val is not None:
p_bldr.with_child(
a_pPr().with_child(
a_jc().with_val(initial_jc_val))
)
p = p_bldr.element
paragraph = Paragraph(p)
# expected_xml -----------------
pPr_bldr = a_pPr()
if expected_jc_val is not None:
pPr_bldr.with_child(a_jc().with_val(expected_jc_val))
p_bldr = a_p().with_nsdecls().with_child(pPr_bldr)
expected_xml = p_bldr.xml()
return paragraph, new_alignment_value, expected_xml

@pytest.fixture
def clear_fixture(self, request):
"""
Expand Down

0 comments on commit 25abe5b

Please sign in to comment.