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)