25 text = text.replace('\\', '\\\\').replace('\n', '\\n').replace('\r', '\\r') |
25 text = text.replace('\\', '\\\\').replace('\n', '\\n').replace('\r', '\\r') |
26 return text.replace('\0', '\\0') |
26 return text.replace('\0', '\\0') |
27 |
27 |
28 def decodeextra(text): |
28 def decodeextra(text): |
29 """ |
29 """ |
30 >>> from pprint import pprint as pp |
30 >>> sorted(decodeextra(encodeextra({'foo': 'bar', 'baz': chr(0) + '2'}) |
31 >>> pp(decodeextra(encodeextra({'foo': 'bar', 'baz': chr(0) + '2'}))) |
31 ... ).iteritems()) |
32 {'baz': '\\x002', 'branch': 'default', 'foo': 'bar'} |
32 [('baz', '\\x002'), ('branch', 'default'), ('foo', 'bar')] |
33 >>> pp(decodeextra(encodeextra({'foo': 'bar', |
33 >>> sorted(decodeextra(encodeextra({'foo': 'bar', |
34 ... 'baz': chr(92) + chr(0) + '2'}))) |
34 ... 'baz': chr(92) + chr(0) + '2'}) |
35 {'baz': '\\\\\\x002', 'branch': 'default', 'foo': 'bar'} |
35 ... ).iteritems()) |
|
36 [('baz', '\\\\\\x002'), ('branch', 'default'), ('foo', 'bar')] |
36 """ |
37 """ |
37 extra = _defaultextra.copy() |
38 extra = _defaultextra.copy() |
38 for l in text.split('\0'): |
39 for l in text.split('\0'): |
39 if l: |
40 if l: |
40 if '\\0' in l: |
41 if '\\0' in l: |