Coverage for /var/srv/projects/api.amasfac.comuna18.com/tmp/venv/lib/python3.9/site-packages/openpyxl/cell/text.py: 63%
93 statements
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
« prev ^ index » next coverage.py v6.4.4, created at 2023-07-17 14:22 -0600
1# Copyright (c) 2010-2022 openpyxl
3"""
4Richtext definition
5"""
7from openpyxl.descriptors.serialisable import Serialisable
8from openpyxl.descriptors import (
9 Alias,
10 Typed,
11 Integer,
12 Set,
13 NoneSet,
14 Bool,
15 String,
16 Sequence,
17)
18from openpyxl.descriptors.nested import (
19 NestedBool,
20 NestedInteger,
21 NestedString,
22 NestedText,
23)
24from openpyxl.styles.fonts import Font
27class PhoneticProperties(Serialisable):
29 tagname = "phoneticPr"
31 fontId = Integer()
32 type = NoneSet(values=(['halfwidthKatakana', 'fullwidthKatakana',
33 'Hiragana', 'noConversion']))
34 alignment = NoneSet(values=(['noControl', 'left', 'center', 'distributed']))
36 def __init__(self,
37 fontId=None,
38 type=None,
39 alignment=None,
40 ):
41 self.fontId = fontId
42 self.type = type
43 self.alignment = alignment
46class PhoneticText(Serialisable):
48 tagname = "rPh"
50 sb = Integer()
51 eb = Integer()
52 t = NestedText(expected_type=str)
53 text = Alias('t')
55 def __init__(self,
56 sb=None,
57 eb=None,
58 t=None,
59 ):
60 self.sb = sb
61 self.eb = eb
62 self.t = t
65class InlineFont(Font):
67 """
68 Font for inline text because, yes what you need are different objects with the same elements but different constraints.
69 """
71 tagname = "RPrElt"
73 rFont = NestedString(allow_none=True)
74 charset = Font.charset
75 family = Font.family
76 b =Font.b
77 i = Font.i
78 strike = Font.strike
79 outline = Font.outline
80 shadow = Font.shadow
81 condense = Font.condense
82 extend = Font.extend
83 color = Font.color
84 sz = Font.sz
85 u = Font.u
86 vertAlign = Font.vertAlign
87 scheme = Font.scheme
89 __elements__ = ('rFont', 'charset', 'family', 'b', 'i', 'strike',
90 'outline', 'shadow', 'condense', 'extend', 'color', 'sz', 'u',
91 'vertAlign', 'scheme')
93 def __init__(self,
94 rFont=None,
95 charset=None,
96 family=None,
97 b=None,
98 i=None,
99 strike=None,
100 outline=None,
101 shadow=None,
102 condense=None,
103 extend=None,
104 color=None,
105 sz=None,
106 u=None,
107 vertAlign=None,
108 scheme=None,
109 ):
110 self.rFont = rFont
111 self.charset = charset
112 self.family = family
113 self.b = b
114 self.i = i
115 self.strike = strike
116 self.outline = outline
117 self.shadow = shadow
118 self.condense = condense
119 self.extend = extend
120 self.color = color
121 self.sz = sz
122 self.u = u
123 self.vertAlign = vertAlign
124 self.scheme = scheme
127class RichText(Serialisable):
129 tagname = "RElt"
131 rPr = Typed(expected_type=InlineFont, allow_none=True)
132 font = Alias("rPr")
133 t = NestedText(expected_type=str, allow_none=True)
134 text = Alias("t")
136 __elements__ = ('rPr', 't')
138 def __init__(self,
139 rPr=None,
140 t=None,
141 ):
142 self.rPr = rPr
143 self.t = t
146class Text(Serialisable):
148 tagname = "text"
150 t = NestedText(allow_none=True, expected_type=str)
151 plain = Alias("t")
152 r = Sequence(expected_type=RichText, allow_none=True)
153 formatted = Alias("r")
154 rPh = Sequence(expected_type=PhoneticText, allow_none=True)
155 phonetic = Alias("rPh")
156 phoneticPr = Typed(expected_type=PhoneticProperties, allow_none=True)
157 PhoneticProperties = Alias("phoneticPr")
159 __elements__ = ('t', 'r', 'rPh', 'phoneticPr')
161 def __init__(self,
162 t=None,
163 r=(),
164 rPh=(),
165 phoneticPr=None,
166 ):
167 self.t = t
168 self.r = r
169 self.rPh = rPh
170 self.phoneticPr = phoneticPr
173 @property
174 def content(self):
175 """
176 Text stripped of all formatting
177 """
178 snippets = []
179 if self.plain is not None:
180 snippets.append(self.plain)
181 for block in self.formatted:
182 if block.t is not None:
183 snippets.append(block.t)
184 return u"".join(snippets)