7 |
7 |
8 from revlog import * |
8 from revlog import * |
9 from i18n import gettext as _ |
9 from i18n import gettext as _ |
10 from demandload import demandload |
10 from demandload import demandload |
11 demandload(globals(), "os time util") |
11 demandload(globals(), "os time util") |
|
12 |
|
13 def _string_escape(text): |
|
14 """ |
|
15 >>> d = {'nl': chr(10), 'bs': chr(92), 'cr': chr(13), 'nul': chr(0)} |
|
16 >>> s = "ab%(nl)scd%(bs)s%(bs)sn%(nul)sab%(cr)scd%(bs)s%(nl)s" % d |
|
17 >>> s |
|
18 'ab\\ncd\\\\\\\\n\\x00ab\\rcd\\\\\\n' |
|
19 >>> res = _string_escape(s) |
|
20 >>> s == _string_unescape(res) |
|
21 True |
|
22 """ |
|
23 # subset of the string_escape codec |
|
24 text = text.replace('\\', '\\\\').replace('\n', '\\n').replace('\r', '\\r') |
|
25 return text.replace('\0', '\\0') |
|
26 |
|
27 def _string_unescape(text): |
|
28 return text.decode('string_escape') |
12 |
29 |
13 class changelog(revlog): |
30 class changelog(revlog): |
14 def __init__(self, opener, defversion=REVLOGV0): |
31 def __init__(self, opener, defversion=REVLOGV0): |
15 revlog.__init__(self, opener, "00changelog.i", "00changelog.d", |
32 revlog.__init__(self, opener, "00changelog.i", "00changelog.d", |
16 defversion) |
33 defversion) |