22 """ |
22 """ |
23 self.pf = file |
23 self.pf = file |
24 |
24 |
25 self.basics = { |
25 self.basics = { |
26 type(None) : self._write_none, |
26 type(None) : self._write_none, |
27 type(1) : self._write_int, |
27 int : self._write_int, |
28 type(1.1) : self._write_float, |
28 float : self._write_float, |
29 type(1+1j) : self._write_complex, |
29 complex : self._write_complex, |
30 type(True) : self._write_bool, |
30 bool : self._write_bool, |
31 type("") : self._write_string, |
31 str : self._write_string, |
32 ## UnicodeType : self._write_unicode, # should be bytes |
32 bytes : self._write_bytes, |
33 type((1,)) : self._write_tuple, |
33 bytearray : self._write_bytearray, |
34 type([]) : self._write_list, |
34 tuple : self._write_tuple, |
35 type({}) : self._write_dictionary, |
35 list : self._write_list, |
|
36 dict : self._write_dictionary, |
|
37 set : self._write_set, |
|
38 frozenset : self._write_frozenset, |
36 # TODO: add set, frozenset, bytes, bytearray |
39 # TODO: add set, frozenset, bytes, bytearray |
37 } |
40 } |
38 |
41 |
39 self.NEWPARA = chr(0x2029) |
42 self.NEWPARA = chr(0x2029) |
40 self.NEWLINE = chr(0x2028) |
43 self.NEWLINE = chr(0x2028) |
105 """ |
108 """ |
106 self._write('%s<none />' % (" " * indent)) |
109 self._write('%s<none />' % (" " * indent)) |
107 |
110 |
108 def _write_int(self, value, indent): |
111 def _write_int(self, value, indent): |
109 """ |
112 """ |
110 Protected method to dump an IntType object. |
113 Protected method to dump an int object. |
111 |
114 |
112 @param value value to be dumped (integer) |
115 @param value value to be dumped (integer) |
113 @param indent indentation level for prettier output (integer) |
116 @param indent indentation level for prettier output (integer) |
114 """ |
117 """ |
115 self._write('%s<int>%s</int>' % (" " * indent, value)) |
118 self._write('%s<int>%s</int>' % (" " * indent, value)) |
116 |
119 |
117 def _write_bool(self, value, indent): |
120 def _write_bool(self, value, indent): |
118 """ |
121 """ |
119 Protected method to dump a BooleanType object. |
122 Protected method to dump a bool object. |
120 |
123 |
121 @param value value to be dumped (boolean) |
124 @param value value to be dumped (boolean) |
122 @param indent indentation level for prettier output (integer) |
125 @param indent indentation level for prettier output (integer) |
123 """ |
126 """ |
124 self._write('%s<bool>%s</bool>' % (" " * indent, value)) |
127 self._write('%s<bool>%s</bool>' % (" " * indent, value)) |
125 |
128 |
126 def _write_float(self, value, indent): |
129 def _write_float(self, value, indent): |
127 """ |
130 """ |
128 Protected method to dump a FloatType object. |
131 Protected method to dump a float object. |
129 |
132 |
130 @param value value to be dumped (float) |
133 @param value value to be dumped (float) |
131 @param indent indentation level for prettier output (integer) |
134 @param indent indentation level for prettier output (integer) |
132 """ |
135 """ |
133 self._write('%s<float>%s</float>' % (" " * indent, value)) |
136 self._write('%s<float>%s</float>' % (" " * indent, value)) |
134 |
137 |
135 def _write_complex(self, value, indent): |
138 def _write_complex(self, value, indent): |
136 """ |
139 """ |
137 Protected method to dump a ComplexType object. |
140 Protected method to dump a complex object. |
138 |
141 |
139 @param value value to be dumped (complex) |
142 @param value value to be dumped (complex) |
140 @param indent indentation level for prettier output (integer) |
143 @param indent indentation level for prettier output (integer) |
141 """ |
144 """ |
142 self._write('%s<complex>%s %s</complex>' % \ |
145 self._write('%s<complex>%s %s</complex>' % \ |
143 (" " * indent, value.real, value.imag)) |
146 (" " * indent, value.real, value.imag)) |
144 |
147 |
145 def _write_string(self, value, indent): |
148 def _write_string(self, value, indent): |
146 """ |
149 """ |
147 Protected method to dump a StringType object. |
150 Protected method to dump a str object. |
148 |
151 |
149 @param value value to be dumped (string) |
152 @param value value to be dumped (string) |
150 @param indent indentation level for prettier output (integer) |
153 @param indent indentation level for prettier output (integer) |
151 """ |
154 """ |
152 self._write('%s<string>%s</string>' % (" " * indent, self.escape(value))) |
155 self._write('%s<string>%s</string>' % (" " * indent, self.escape(value))) |
153 |
156 |
|
157 def _write_bytes(self, value, indent): |
|
158 """ |
|
159 Protected method to dump a bytes object. |
|
160 |
|
161 @param value value to be dumped (bytes) |
|
162 @param indent indentation level for prettier output (integer) |
|
163 """ |
|
164 self._write('%s<bytes>%s</bytes>' % ( |
|
165 " " * indent, ",".join(["%d" % b for b in value]))) |
|
166 |
|
167 def _write_bytearray(self, value, indent): |
|
168 """ |
|
169 Protected method to dump a bytearray object. |
|
170 |
|
171 @param value value to be dumped (bytearray) |
|
172 @param indent indentation level for prettier output (integer) |
|
173 """ |
|
174 self._write('%s<bytearray>%s</bytearray>' % ( |
|
175 " " * indent, ",".join(["%d" % b for b in value]))) |
|
176 |
154 def _write_tuple(self, value, indent): |
177 def _write_tuple(self, value, indent): |
155 """ |
178 """ |
156 Protected method to dump a TupleType object. |
179 Protected method to dump a tuple object. |
157 |
180 |
158 @param value value to be dumped (tuple) |
181 @param value value to be dumped (tuple) |
159 @param indent indentation level for prettier output (integer) |
182 @param indent indentation level for prettier output (integer) |
160 """ |
183 """ |
161 self._write('%s<tuple>' % (" " * indent)) |
184 self._write('%s<tuple>' % (" " * indent)) |
195 self._write('%s<value>' % (" " * nindent1)) |
218 self._write('%s<value>' % (" " * nindent1)) |
196 self._writeBasics(value[key], nindent2) |
219 self._writeBasics(value[key], nindent2) |
197 self._write('%s</value>' % (" " * nindent1)) |
220 self._write('%s</value>' % (" " * nindent1)) |
198 self._write('%s</dict>' % (" " * indent)) |
221 self._write('%s</dict>' % (" " * indent)) |
199 |
222 |
|
223 def _write_set(self, value, indent): |
|
224 """ |
|
225 Protected method to dump a set object. |
|
226 |
|
227 @param value value to be dumped (set) |
|
228 @param indent indentation level for prettier output (integer) |
|
229 """ |
|
230 self._write('%s<set>' % (" " * indent)) |
|
231 nindent = indent + 1 |
|
232 for elem in value: |
|
233 self._writeBasics(elem, nindent) |
|
234 self._write('%s</set>' % (" " * indent)) |
|
235 |
|
236 def _write_frozenset(self, value, indent): |
|
237 """ |
|
238 Protected method to dump a frozenset object. |
|
239 |
|
240 @param value value to be dumped (frozenset) |
|
241 @param indent indentation level for prettier output (integer) |
|
242 """ |
|
243 self._write('%s<frozenset>' % (" " * indent)) |
|
244 nindent = indent + 1 |
|
245 for elem in value: |
|
246 self._writeBasics(elem, nindent) |
|
247 self._write('%s</frozenset>' % (" " * indent)) |
|
248 |
200 def _write_unimplemented(self, value, indent): |
249 def _write_unimplemented(self, value, indent): |
201 """ |
250 """ |
202 Protected method to dump a type, that has no special method. |
251 Protected method to dump a type, that has no special method. |
203 |
252 |
204 @param value value to be dumped (any pickleable object) |
253 @param value value to be dumped (any pickleable object) |