Show More
@@ -208,6 +208,27 def _fm0encodeonemarker(marker): | |||
|
208 | 208 | data.extend(sucs) |
|
209 | 209 | return _pack(format, *data) + metadata |
|
210 | 210 | |
|
211 | def _fm0encodemeta(meta): | |
|
212 | """Return encoded metadata string to string mapping. | |
|
213 | ||
|
214 | Assume no ':' in key and no '\0' in both key and value.""" | |
|
215 | for key, value in meta.iteritems(): | |
|
216 | if ':' in key or '\0' in key: | |
|
217 | raise ValueError("':' and '\0' are forbidden in metadata key'") | |
|
218 | if '\0' in value: | |
|
219 | raise ValueError("':' is forbidden in metadata value'") | |
|
220 | return '\0'.join(['%s:%s' % (k, meta[k]) for k in sorted(meta)]) | |
|
221 | ||
|
222 | def _fm0decodemeta(data): | |
|
223 | """Return string to string dictionary from encoded version.""" | |
|
224 | d = {} | |
|
225 | for l in data.split('\0'): | |
|
226 | if l: | |
|
227 | key, value = l.split(':') | |
|
228 | d[key] = value | |
|
229 | return d | |
|
230 | ||
|
231 | ||
|
211 | 232 | # mapping to read/write various marker formats |
|
212 | 233 | # <version> -> (decoder, encoder) |
|
213 | 234 | formats = {_fm0version: (_fm0readmarkers, _fm0encodeonemarker)} |
@@ -232,26 +253,6 def encodemarkers(markers, addheader=Fal | |||
|
232 | 253 | yield encodeone(marker) |
|
233 | 254 | |
|
234 | 255 | |
|
235 | def _fm0encodemeta(meta): | |
|
236 | """Return encoded metadata string to string mapping. | |
|
237 | ||
|
238 | Assume no ':' in key and no '\0' in both key and value.""" | |
|
239 | for key, value in meta.iteritems(): | |
|
240 | if ':' in key or '\0' in key: | |
|
241 | raise ValueError("':' and '\0' are forbidden in metadata key'") | |
|
242 | if '\0' in value: | |
|
243 | raise ValueError("':' is forbidden in metadata value'") | |
|
244 | return '\0'.join(['%s:%s' % (k, meta[k]) for k in sorted(meta)]) | |
|
245 | ||
|
246 | def _fm0decodemeta(data): | |
|
247 | """Return string to string dictionary from encoded version.""" | |
|
248 | d = {} | |
|
249 | for l in data.split('\0'): | |
|
250 | if l: | |
|
251 | key, value = l.split(':') | |
|
252 | d[key] = value | |
|
253 | return d | |
|
254 | ||
|
255 | 256 | class marker(object): |
|
256 | 257 | """Wrap obsolete marker raw data""" |
|
257 | 258 |
General Comments 0
You need to be logged in to leave comments.
Login now