Mercurial > hg > mercurial-crew-with-dirclash
comparison mercurial/changelog.py @ 3224:394ac87f3b74
[extendedchangelog] encode/decode function
encode '\n', '\r' and '\0'
author | Benoit Boissinot <benoit.boissinot@ens-lyon.org> |
---|---|
date | Mon, 02 Oct 2006 22:35:37 +0200 |
parents | ad6aecaf4eed |
children | 2f35961854fb |
comparison
equal
deleted
inserted
replaced
3223:35d61e653174 | 3224:394ac87f3b74 |
---|---|
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) |