File tree Expand file tree Collapse file tree 4 files changed +38
-1
lines changed
Expand file tree Collapse file tree 4 files changed +38
-1
lines changed Original file line number Diff line number Diff line change @@ -49,6 +49,14 @@ def new():
4949 xml = '<w:r %s/>' % nsdecls ('w' )
5050 return oxml_fromstring (xml )
5151
52+ def add_t (self , text ):
53+ """
54+ Return a newly added CT_T (<w:t>) element containing *text*.
55+ """
56+ t = CT_Text .new (text )
57+ self .append (t )
58+ return t
59+
5260
5361class CT_Text (OxmlBaseElement ):
5462 """
Original file line number Diff line number Diff line change @@ -48,3 +48,6 @@ class Text(object):
4848 """
4949 Proxy object wrapping ``<w:t>`` element.
5050 """
51+ def __init__ (self , t_elm ):
52+ super (Text , self ).__init__ ()
53+ self ._t = t_elm
Original file line number Diff line number Diff line change @@ -36,6 +36,15 @@ def it_can_construct_a_new_r_element(self):
3636 r = CT_R .new ()
3737 assert r .xml == an_r ().with_nsdecls ().xml
3838
39+ def it_can_add_a_t_to_itself (self ):
40+ text = 'foobar'
41+ r = an_r ().with_nsdecls ().element
42+ # exercise -----------------
43+ t = r .add_t (text )
44+ # verify -------------------
45+ assert r .xml == an_r ().with_nsdecls ().with_t (text ).xml
46+ assert isinstance (t , CT_Text )
47+
3948
4049class DescribeCT_Text (object ):
4150
Original file line number Diff line number Diff line change @@ -126,12 +126,29 @@ class CT_RBuilder(BaseBuilder):
126126 def __init__ (self ):
127127 """Establish instance variables with default values"""
128128 super (CT_RBuilder , self ).__init__ ()
129+ self ._t = []
130+
131+ @property
132+ def is_empty (self ):
133+ return len (self ._t ) == 0
134+
135+ def with_t (self , text ):
136+ """Add an text element containing *text*"""
137+ self ._t .append (a_t (text ))
138+ return self
129139
130140 @property
131141 def xml (self ):
132142 """Return element XML based on attribute settings"""
133143 indent = ' ' * self ._indent
134- return '%s<w:r%s/>\n ' % (indent , self ._nsdecls )
144+ if self .is_empty :
145+ xml = '%s<w:r%s/>\n ' % (indent , self ._nsdecls )
146+ else :
147+ xml = '%s<w:r%s>\n ' % (indent , self ._nsdecls )
148+ for t_builder in self ._t :
149+ xml += t_builder .with_indent (self ._indent + 2 ).xml
150+ xml += '%s</w:r>\n ' % indent
151+ return xml
135152
136153
137154class CT_TextBuilder (BaseBuilder ):
You can’t perform that action at this time.
0 commit comments