Skip to content

Commit 0c887e8

Browse files
author
Steve Canny
committed
tbl: add CT_Row.trPr
1 parent 9605cc0 commit 0c887e8

File tree

3 files changed

+30
-0
lines changed

3 files changed

+30
-0
lines changed

HISTORY.rst

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ NEXT
99
- Fix #149: KeyError on Document.add_table()
1010
- Fix #78: feature: add_table() sets cell widths
1111
- Add #106: feature: Table.direction (i.e. right-to-left)
12+
- Add #102: feature: add CT_Row.trPr
1213

1314

1415
0.8.4 (2015-02-20)

docx/oxml/table.py

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ class CT_Row(BaseOxmlElement):
2525
"""
2626
``<w:tr>`` element
2727
"""
28+
tblPrEx = ZeroOrOne('w:tblPrEx') # custom inserter below
29+
trPr = ZeroOrOne('w:trPr') # custom inserter below
2830
tc = ZeroOrMore('w:tc')
2931

3032
def tc_at_grid_col(self, idx):
@@ -49,6 +51,16 @@ def tr_idx(self):
4951
"""
5052
return self.getparent().tr_lst.index(self)
5153

54+
def _insert_tblPrEx(self, tblPrEx):
55+
self.insert(0, tblPrEx)
56+
57+
def _insert_trPr(self, trPr):
58+
tblPrEx = self.tblPrEx
59+
if tblPrEx is not None:
60+
tblPrEx.addnext(trPr)
61+
else:
62+
self.insert(0, trPr)
63+
5264
def _new_tc(self):
5365
return CT_Tc.new()
5466

tests/oxml/test_table.py

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,13 +21,30 @@
2121

2222
class DescribeCT_Row(object):
2323

24+
def it_can_add_a_trPr(self, add_trPr_fixture):
25+
tr, expected_xml = add_trPr_fixture
26+
tr._add_trPr()
27+
assert tr.xml == expected_xml
28+
2429
def it_raises_on_tc_at_grid_col(self, tc_raise_fixture):
2530
tr, idx = tc_raise_fixture
2631
with pytest.raises(ValueError):
2732
tr.tc_at_grid_col(idx)
2833

2934
# fixtures -------------------------------------------------------
3035

36+
@pytest.fixture(params=[
37+
('w:tr', 'w:tr/w:trPr'),
38+
('w:tr/w:tblPrEx', 'w:tr/(w:tblPrEx,w:trPr)'),
39+
('w:tr/w:tc', 'w:tr/(w:trPr,w:tc)'),
40+
('w:tr/(w:sdt,w:del,w:tc)', 'w:tr/(w:trPr,w:sdt,w:del,w:tc)'),
41+
])
42+
def add_trPr_fixture(self, request):
43+
tr_cxml, expected_cxml = request.param
44+
tr = element(tr_cxml)
45+
expected_xml = xml(expected_cxml)
46+
return tr, expected_xml
47+
3148
@pytest.fixture(params=[(0, 0, 3), (1, 0, 1)])
3249
def tc_raise_fixture(self, request):
3350
snippet_idx, row_idx, col_idx = request.param

0 commit comments

Comments
 (0)