File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1414
1515from docx .oxml .base import register_custom_element_class
1616from docx .oxml .parts import CT_Body
17- from docx .oxml .text import CT_P , CT_R
17+ from docx .oxml .text import CT_P , CT_R , CT_Text
1818
1919
2020# ===========================================================================
2424register_custom_element_class ('w:body' , CT_Body )
2525register_custom_element_class ('w:p' , CT_P )
2626register_custom_element_class ('w:r' , CT_R )
27+ register_custom_element_class ('w:t' , CT_Text )
Original file line number Diff line number Diff line change @@ -48,3 +48,16 @@ def new():
4848 """
4949 xml = '<w:r %s/>' % nsdecls ('w' )
5050 return oxml_fromstring (xml )
51+
52+
53+ class CT_Text (OxmlBaseElement ):
54+ """
55+ ``<w:t>`` element, containing a sequence of characters within a run.
56+ """
57+ @staticmethod
58+ def new (text ):
59+ """
60+ Return a new ``<w:t>`` element.
61+ """
62+ xml = '<w:t %s>%s</w:t>' % (nsdecls ('w' ), text )
63+ return oxml_fromstring (xml )
Original file line number Diff line number Diff line change 99
1010"""Test suite for the docx.oxml.text module."""
1111
12- from docx .oxml .text import CT_P , CT_R
12+ from docx .oxml .text import CT_P , CT_R , CT_Text
1313
14- from ..unitdata import a_p , an_r
14+ from ..unitdata import a_p , a_t , an_r
1515
1616
1717class DescribeCT_P (object ):
@@ -35,3 +35,11 @@ class DescribeCT_R(object):
3535 def it_can_construct_a_new_r_element (self ):
3636 r = CT_R .new ()
3737 assert r .xml == an_r ().with_nsdecls ().xml
38+
39+
40+ class DescribeCT_Text (object ):
41+
42+ def it_can_construct_a_new_t_element (self ):
43+ text = 'foobar'
44+ t = CT_Text .new (text )
45+ assert t .xml == a_t (text ).with_nsdecls ().xml
Original file line number Diff line number Diff line change @@ -134,6 +134,23 @@ def xml(self):
134134 return '%s<w:r%s/>\n ' % (indent , self ._nsdecls )
135135
136136
137+ class CT_TextBuilder (BaseBuilder ):
138+ """
139+ Test data builder for a CT_Text (<w:t>) XML element that appears within a
140+ run element.
141+ """
142+ def __init__ (self , text ):
143+ """Establish instance variables with default values"""
144+ super (CT_TextBuilder , self ).__init__ ()
145+ self ._text = text
146+
147+ @property
148+ def xml (self ):
149+ """Return element XML based on attribute settings"""
150+ indent = ' ' * self ._indent
151+ return '%s<w:t%s>%s</w:t>\n ' % (indent , self ._nsdecls , self ._text )
152+
153+
137154class CT_SectPrBuilder (BaseBuilder ):
138155 """
139156 Test data builder for a CT_SectPr (<w:sectPr>) XML element that appears
@@ -161,6 +178,11 @@ def a_p():
161178 return CT_PBuilder ()
162179
163180
181+ def a_t (text ):
182+ """Return a CT_TextBuilder instance"""
183+ return CT_TextBuilder (text )
184+
185+
164186def a_sectPr ():
165187 """Return a CT_SectPr instance"""
166188 return CT_SectPrBuilder ()
You can’t perform that action at this time.
0 commit comments