mercurial/changelog.py
changeset 3224 394ac87f3b74
parent 3074 ad6aecaf4eed
child 3225 2f35961854fb
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)