mercurial/encoding.py
changeset 34137 a8994d08e4a2
parent 34136 414a3513c2bd
child 34200 112f118ecb00
equal deleted inserted replaced
34136:414a3513c2bd 34137:a8994d08e4a2
     3 #  Copyright 2005-2009 Matt Mackall <mpm@selenic.com> and others
     3 #  Copyright 2005-2009 Matt Mackall <mpm@selenic.com> and others
     4 #
     4 #
     5 # This software may be used and distributed according to the terms of the
     5 # This software may be used and distributed according to the terms of the
     6 # GNU General Public License version 2 or any later version.
     6 # GNU General Public License version 2 or any later version.
     7 
     7 
     8 from __future__ import absolute_import
     8 from __future__ import absolute_import, print_function
     9 
     9 
    10 import io
    10 import io
    11 import locale
    11 import locale
    12 import os
    12 import os
    13 import unicodedata
    13 import unicodedata
   246 
   246 
   247     If 'leftside' is True, left side of string 's' is trimmed.
   247     If 'leftside' is True, left side of string 's' is trimmed.
   248     'ellipsis' is always placed at trimmed side.
   248     'ellipsis' is always placed at trimmed side.
   249 
   249 
   250     >>> from .node import bin
   250     >>> from .node import bin
       
   251     >>> def bprint(s):
       
   252     ...     print(pycompat.sysstr(s))
   251     >>> ellipsis = b'+++'
   253     >>> ellipsis = b'+++'
   252     >>> from . import encoding
   254     >>> from . import encoding
   253     >>> encoding.encoding = b'utf-8'
   255     >>> encoding.encoding = b'utf-8'
   254     >>> t = b'1234567890'
   256     >>> t = b'1234567890'
   255     >>> print trim(t, 12, ellipsis=ellipsis)
   257     >>> bprint(trim(t, 12, ellipsis=ellipsis))
   256     1234567890
   258     1234567890
   257     >>> print trim(t, 10, ellipsis=ellipsis)
   259     >>> bprint(trim(t, 10, ellipsis=ellipsis))
   258     1234567890
   260     1234567890
   259     >>> print trim(t, 8, ellipsis=ellipsis)
   261     >>> bprint(trim(t, 8, ellipsis=ellipsis))
   260     12345+++
   262     12345+++
   261     >>> print trim(t, 8, ellipsis=ellipsis, leftside=True)
   263     >>> bprint(trim(t, 8, ellipsis=ellipsis, leftside=True))
   262     +++67890
   264     +++67890
   263     >>> print trim(t, 8)
   265     >>> bprint(trim(t, 8))
   264     12345678
   266     12345678
   265     >>> print trim(t, 8, leftside=True)
   267     >>> bprint(trim(t, 8, leftside=True))
   266     34567890
   268     34567890
   267     >>> print trim(t, 3, ellipsis=ellipsis)
   269     >>> bprint(trim(t, 3, ellipsis=ellipsis))
   268     +++
   270     +++
   269     >>> print trim(t, 1, ellipsis=ellipsis)
   271     >>> bprint(trim(t, 1, ellipsis=ellipsis))
   270     +
   272     +
   271     >>> u = u'\u3042\u3044\u3046\u3048\u304a' # 2 x 5 = 10 columns
   273     >>> u = u'\u3042\u3044\u3046\u3048\u304a' # 2 x 5 = 10 columns
   272     >>> t = u.encode(pycompat.sysstr(encoding.encoding))
   274     >>> t = u.encode(pycompat.sysstr(encoding.encoding))
   273     >>> print trim(t, 12, ellipsis=ellipsis)
   275     >>> bprint(trim(t, 12, ellipsis=ellipsis))
   274     \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a
   276     \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a
   275     >>> print trim(t, 10, ellipsis=ellipsis)
   277     >>> bprint(trim(t, 10, ellipsis=ellipsis))
   276     \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a
   278     \xe3\x81\x82\xe3\x81\x84\xe3\x81\x86\xe3\x81\x88\xe3\x81\x8a
   277     >>> print trim(t, 8, ellipsis=ellipsis)
   279     >>> bprint(trim(t, 8, ellipsis=ellipsis))
   278     \xe3\x81\x82\xe3\x81\x84+++
   280     \xe3\x81\x82\xe3\x81\x84+++
   279     >>> print trim(t, 8, ellipsis=ellipsis, leftside=True)
   281     >>> bprint(trim(t, 8, ellipsis=ellipsis, leftside=True))
   280     +++\xe3\x81\x88\xe3\x81\x8a
   282     +++\xe3\x81\x88\xe3\x81\x8a
   281     >>> print trim(t, 5)
   283     >>> bprint(trim(t, 5))
   282     \xe3\x81\x82\xe3\x81\x84
   284     \xe3\x81\x82\xe3\x81\x84
   283     >>> print trim(t, 5, leftside=True)
   285     >>> bprint(trim(t, 5, leftside=True))
   284     \xe3\x81\x88\xe3\x81\x8a
   286     \xe3\x81\x88\xe3\x81\x8a
   285     >>> print trim(t, 4, ellipsis=ellipsis)
   287     >>> bprint(trim(t, 4, ellipsis=ellipsis))
   286     +++
   288     +++
   287     >>> print trim(t, 4, ellipsis=ellipsis, leftside=True)
   289     >>> bprint(trim(t, 4, ellipsis=ellipsis, leftside=True))
   288     +++
   290     +++
   289     >>> t = bin(b'112233445566778899aa') # invalid byte sequence
   291     >>> t = bin(b'112233445566778899aa') # invalid byte sequence
   290     >>> print trim(t, 12, ellipsis=ellipsis)
   292     >>> bprint(trim(t, 12, ellipsis=ellipsis))
   291     \x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa
   293     \x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa
   292     >>> print trim(t, 10, ellipsis=ellipsis)
   294     >>> bprint(trim(t, 10, ellipsis=ellipsis))
   293     \x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa
   295     \x11\x22\x33\x44\x55\x66\x77\x88\x99\xaa
   294     >>> print trim(t, 8, ellipsis=ellipsis)
   296     >>> bprint(trim(t, 8, ellipsis=ellipsis))
   295     \x11\x22\x33\x44\x55+++
   297     \x11\x22\x33\x44\x55+++
   296     >>> print trim(t, 8, ellipsis=ellipsis, leftside=True)
   298     >>> bprint(trim(t, 8, ellipsis=ellipsis, leftside=True))
   297     +++\x66\x77\x88\x99\xaa
   299     +++\x66\x77\x88\x99\xaa
   298     >>> print trim(t, 8)
   300     >>> bprint(trim(t, 8))
   299     \x11\x22\x33\x44\x55\x66\x77\x88
   301     \x11\x22\x33\x44\x55\x66\x77\x88
   300     >>> print trim(t, 8, leftside=True)
   302     >>> bprint(trim(t, 8, leftside=True))
   301     \x33\x44\x55\x66\x77\x88\x99\xaa
   303     \x33\x44\x55\x66\x77\x88\x99\xaa
   302     >>> print trim(t, 3, ellipsis=ellipsis)
   304     >>> bprint(trim(t, 3, ellipsis=ellipsis))
   303     +++
   305     +++
   304     >>> print trim(t, 1, ellipsis=ellipsis)
   306     >>> bprint(trim(t, 1, ellipsis=ellipsis))
   305     +
   307     +
   306     """
   308     """
   307     try:
   309     try:
   308         u = s.decode(_sysstr(encoding))
   310         u = s.decode(_sysstr(encoding))
   309     except UnicodeDecodeError:
   311     except UnicodeDecodeError: