1 import sys
2 IS_PYTHON3 = sys.version_info[0] >= 3
3
4 if IS_PYTHON3:
5 exec('from ._exceptions import *')
6 else:
7 exec('from _exceptions import *')
8
9
11 '''Returns a new object instance from a string'''
12 name = name.upper()
13 if name == 'A':
14 return A()
15 elif name == 'B':
16 return B()
17 elif name == 'BN':
18 return BN()
19 elif name == 'BZ':
20 return BZ()
21 elif name == ':':
22 return Colon()
23 elif name == 'D':
24 return D()
25 elif name == 'E':
26 return E()
27 elif name == 'EN':
28 return EN()
29 elif name == 'ES':
30 return ES()
31 elif name == 'F':
32 return F()
33 elif name == 'G':
34 return G()
35 elif name == 'H':
36 return H()
37 elif name == 'I':
38 return I()
39 elif name == 'L':
40 return L()
41 elif name == 'O':
42 return O()
43 elif name == 'P':
44 return P()
45 elif name =='S':
46 return S()
47 elif name == '/':
48 return Slash()
49 elif name == 'SP':
50 return SP()
51 elif name == 'SS':
52 return SS()
53 elif name == 'T':
54 return T()
55 elif name == 'TL':
56 return TL()
57 elif name == 'TR':
58 return TR()
59 elif name == 'X':
60 return X()
61 elif name == 'Z':
62 return Z()
63 else:
64 raise InvalidFormat('Expected an edit descriptor, got %s' % name)
65
66
67
70 self.repeat = None
71 self.width = None
73 return '<A repeat=' + str(self.repeat) + \
74 ' width=' + str(self.width) + '>'
75
78 self.char_string = char_string
80 return len(self.char_string)
81 width = property(get_width)
83 return '<QuotedString char_string=' + str(self.char_string) + '>'
84
85
88 self.repeat = None
89 self.width = None
90 self.min_digits = None
92 return '<B repeat=' + str(self.repeat) + \
93 ' width=' + str(self.width) + \
94 ' min_digits=' + str(self.min_digits) + '>'
95
101
107
113
116 self.repeat = None
117 self.width = None
118 self.decimal_places = None
120 return '<D repeat=' + str(self.repeat) + \
121 ' width=' + str(self.width) + \
122 ' decimal_places=' + str(self.decimal_places) + '>'
123
126 self.repeat = None
127 self.width = None
128 self.decimal_places = None
129 self.exponent = None
131 return '<E repeat=' + str(self.repeat) + \
132 ' width=' + str(self.width) + \
133 ' decimal_places=' + str(self.decimal_places) + \
134 ' exponent=' + str(self.exponent) + '>'
135
136
139 self.repeat = None
140 self.width = None
141 self.decimal_places = None
142 self.exponent = None
144 return '<EN repeat=' + str(self.repeat) + \
145 ' width=' + str(self.width) + \
146 ' decimal_places=' + str(self.decimal_places) + \
147 ' exponent=' + str(self.exponent) + '>'
148
149
152 self.repeat = None
153 self.width = None
154 self.decimal_places = None
155 self.exponent = None
157 return '<ES repeat=' + str(self.repeat) + \
158 ' width=' + str(self.width) + \
159 ' decimal_places=' + str(self.decimal_places) + \
160 ' exponent=' + str(self.exponent) + '>'
161
164 self.repeat = None
165 self.width = None
166 self.decimal_places = None
168 return '<F repeat=' + str(self.repeat) + \
169 ' width=' + str(self.width) + \
170 ' decimal_places=' + str(self.decimal_places) + '>'
171
174
177 self.repeat = None
178 self.width = None
179 self.decimal_places = None
180 self.exponent = None
182 return '<G repeat=' + str(self.repeat) + \
183 ' width=' + str(self.width) + \
184 ' decimal_places=' + str(self.decimal_places) + \
185 ' exponent=' + str(self.exponent) + '>'
186
187
190 self.num_chars = None
191 self.char_string = None
193 return '<H num_chars=' + str(self.num_chars) + \
194 ' char_string=' + str(self.char_string) + '>'
195
198 self.repeat = None
199 self.width = None
200 self.min_digits = None
202 return '<I repeat=' + str(self.repeat) + \
203 ' width=' + str(self.width) + \
204 ' min_digits=' + str(self.min_digits) + '>'
205
208 self.repeat = None
209 self.width = None
211 return '<L repeat=' + str(self.repeat) + \
212 ' width=' + str(self.width) + '>'
213
214
217 self.repeat = None
218 self.width = None
219 self.min_digits = None
221 return '<O repeat=' + str(self.repeat) + \
222 ' width=' + str(self.width) + \
223 ' min_digits=' + str(self.min_digits) + '>'
224
229 return '<P scale=' + str(self.scale) + '>'
230
236
239 self.repeat = None
240 pass
242 return '<Slash repeat=' + str(self.repeat) + '>'
243
249
255
258 self.num_chars = None
260 return '<T num_chars=' + str(self.num_chars) + '>'
261
264 self.num_chars = None
266 return '<TL num_chars=' + str(self.num_chars) + '>'
267
270 self.num_chars = None
272 return '<TR num_chars=' + str(self.num_chars) + '>'
273
276 self.num_chars = None
278 return '<X num_chars=' + str(self.num_chars) + '>'
279
280
283 self.repeat = None
284 self.width = None
285 self.min_digits = None
287 return '<Z repeat=' + str(self.repeat) + \
288 ' width=' + str(self.width) + \
289 ' min_digits=' + str(self.min_digits) + '>'
290
291
292
293 ED1 = ['BN', 'BZ', 'SP', 'SS', 'S']
294 ED2 = ['X']
295 ED3 = ['T', 'TR', 'TL', 'L']
296 ED4 = ['A']
297 ED5 = ['D', 'F']
298 ED6 = ['B', 'I', 'O', 'Z']
299 ED7 = ['E', 'EN', 'ES', 'G']
300 ED8 = ['P']
301 ED9 = [':']
302 ED10 = ['/']
303 REPEATABLE_EDS = ['L', 'A', 'D', 'F', 'B', 'I', 'O', 'Z', 'E', 'EN', 'ES', 'G', '/']
304 OUTPUT_EDS = (L, A, D, F, B, I, O, Z, E, EN, ES, G)
305 CONTROL_EDS = (BN, BZ, P, SP, SS, S, X, T, TR, TL, Colon, Slash)
306 NON_REVERSION_EDS = (P, S, SP, SS, BN, BZ)
307 ALL_ED = ED1 + ED2 + ED3 + ED4 + ED5 + ED6 + ED7 + ED8 + ED9 + ED10
308