Skip to content

Commit 9022cba

Browse files
author
Steve Canny
committed
oxml: convert CT_Br to xmlchemy
1 parent 7592a60 commit 9022cba

2 files changed

Lines changed: 29 additions & 30 deletions

File tree

docx/oxml/simpletypes.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,30 @@ def validate(cls, value):
153153
cls.validate_int_in_range(value, 0, 4294967295)
154154

155155

156+
class ST_BrClear(XsdString):
157+
158+
@classmethod
159+
def validate(cls, value):
160+
cls.validate_string(value)
161+
valid_values = ('none', 'left', 'right', 'all')
162+
if value not in valid_values:
163+
raise ValueError(
164+
"must be one of %s, got '%s'" % (valid_values, value)
165+
)
166+
167+
168+
class ST_BrType(XsdString):
169+
170+
@classmethod
171+
def validate(cls, value):
172+
cls.validate_string(value)
173+
valid_values = ('page', 'column', 'textWrapping')
174+
if value not in valid_values:
175+
raise ValueError(
176+
"must be one of %s, got '%s'" % (valid_values, value)
177+
)
178+
179+
156180
class ST_Coordinate(BaseIntType):
157181

158182
@classmethod

docx/oxml/text.py

Lines changed: 5 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -9,35 +9,16 @@
99
from ..enum.text import WD_UNDERLINE
1010
from .ns import nsdecls, qn
1111
from .shared import CT_String
12-
from .xmlchemy import BaseOxmlElement
12+
from .simpletypes import ST_BrClear, ST_BrType
13+
from .xmlchemy import BaseOxmlElement, OptionalAttribute, ZeroOrMore
1314

1415

1516
class CT_Br(BaseOxmlElement):
1617
"""
1718
``<w:br>`` element, indicating a line, page, or column break in a run.
1819
"""
19-
@classmethod
20-
def new(cls):
21-
"""
22-
Return a new ``<w:br>`` element.
23-
"""
24-
return OxmlElement('w:br')
25-
26-
@property
27-
def clear(self):
28-
self.get(qn('w:clear'))
29-
30-
@clear.setter
31-
def clear(self, clear_str):
32-
self.set(qn('w:clear'), clear_str)
33-
34-
@property
35-
def type(self):
36-
return self.get(qn('w:type'))
37-
38-
@type.setter
39-
def type(self, type_str):
40-
self.set(qn('w:type'), type_str)
20+
type = OptionalAttribute('w:type', ST_BrType)
21+
clear = OptionalAttribute('w:clear', ST_BrClear)
4122

4223

4324
class CT_P(BaseOxmlElement):
@@ -208,13 +189,7 @@ class CT_R(BaseOxmlElement):
208189
"""
209190
``<w:r>`` element, containing the properties and text for a run.
210191
"""
211-
def add_br(self):
212-
"""
213-
Return a newly appended CT_Br (<w:br>) child element.
214-
"""
215-
br = CT_Br.new()
216-
self.append(br)
217-
return br
192+
br = ZeroOrMore('w:br')
218193

219194
def add_drawing(self, inline_or_anchor):
220195
"""

0 commit comments

Comments
 (0)