mercurial/utils/stringutil.py
changeset 37300 2f859ad7ed8c
parent 37290 cc5a040fe150
child 37322 a67fd1fe5109
equal deleted inserted replaced
37299:e9aadee698cf 37300:2f859ad7ed8c
    34 def escapedata(s):
    34 def escapedata(s):
    35     if isinstance(s, bytearray):
    35     if isinstance(s, bytearray):
    36         s = bytes(s)
    36         s = bytes(s)
    37 
    37 
    38     return _DATA_ESCAPE_RE.sub(lambda m: _DATA_ESCAPE_MAP[m.group(0)], s)
    38     return _DATA_ESCAPE_RE.sub(lambda m: _DATA_ESCAPE_MAP[m.group(0)], s)
       
    39 
       
    40 def pprint(o):
       
    41     """Pretty print an object."""
       
    42     if isinstance(o, (bytes, bytearray)):
       
    43         return "b'%s'" % escapedata(o)
       
    44     elif isinstance(o, list):
       
    45         return '[%s]' % (b', '.join(pprint(a) for a in o))
       
    46     elif isinstance(o, dict):
       
    47         return '{%s}' % (b', '.join(
       
    48             '%s: %s' % (pprint(k), pprint(v)) for k, v in sorted(o.items())))
       
    49     elif isinstance(o, bool):
       
    50         return b'True' if o else b'False'
       
    51     else:
       
    52         raise error.ProgrammingError('do not know how to format %r' % o)
    39 
    53 
    40 def binary(s):
    54 def binary(s):
    41     """return true if a string is binary data"""
    55     """return true if a string is binary data"""
    42     return bool(s and '\0' in s)
    56     return bool(s and '\0' in s)
    43 
    57