Sections
Timeline
Sub-Sections
Download
Unified Diff
Zip Archive
Metanav
Preferences
About Trac
Links
Slowchop Studios
Gerald Kaszuba
Advertisement

Changeset 19

Show
Ignore:
Timestamp:
22/11/07 04:14:01 (14 months ago)
Author:
gak
Message:

added colours and fixed some formatting

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • betterprint/trunk/betterprint.py

    r18 r19  
    66        orig_pprint.PrettyPrinter.__init__(self, indent, width, depth, stream) 
    77        self._indent = indent 
     8        self._colours = { 
     9            'syntax': '\x1b[0;37m', 
     10            'key': '\x1b[0;93m', 
     11            'value': '\x1b[0;38m', 
     12        } 
    813 
    9     def orig_pprint(self, object): 
     14    def pprint(self, object): 
    1015        self._format(object, self._stream, self._indent, self._depth, {}, 0) 
    11         self._stream.write("\n") 
     16        self._stream.write('\n') 
    1217 
    1318    def pformat(self, object): 
    14         sio = _StringIO() 
     19        sio = orig_pprint._StringIO() 
    1520        self._format(object, sio, self._indent, self._depth, {}, 0) 
    1621        return sio.getvalue() 
    1722 
    1823    def _format(self, object, stream, indent, allowance, context, level): 
     24        if not allowance: 
     25            allowance = 0 
    1926        level = level + 1 
    2027        objid = id(object) 
    2128        if objid in context: 
     29            stream.write(self._colours['value']) 
    2230            stream.write(orig_pprint._recursion(object)) 
    2331            self._recursive = True 
     
    2836        write = stream.write 
    2937 
    30         r = getattr(typ, "__repr__", None) 
     38        r = getattr(typ, '__repr__', None) 
    3139        if issubclass(typ, dict) and r is dict.__repr__: 
    3240            write('{') 
    33             write('\n') 
    34             write((indent * level) * ' ') 
    3541            length = len(object) 
    3642            if length: 
     43                write('\n') 
     44                write((indent * level) * ' ') 
    3745                context[objid] = 1 
    3846                items  = object.items() 
     
    4048                key, ent = items[0] 
    4149                rep = self._repr(key, context, level) 
     50                write(self._colours['key']) 
    4251                write(rep) 
     52                write(self._colours['syntax']) 
    4353                write(': ') 
    44                 self._format(ent, stream, indent, allowance + 1, context, level) 
    45                 if 1 or length > 1: 
    46                     for key, ent in items[1:]: 
    47                         rep = self._repr(key, context, level) 
    48                         write(',') 
    49                         write('\n') 
    50                         write(' ' * (indent * level)) 
    51                         write(rep) 
    52                         self._format(ent, stream, indent, allowance + 1, context, level) 
     54                self._format(ent, stream, indent, allowance + 1, context, \ 
     55                    level) 
     56                for key, ent in items[1:]: 
     57                    rep = self._repr(key, context, level) 
     58                    write(self._colours['syntax']) 
     59                    write(',') 
     60                    write('\n') 
     61                    write(' ' * (indent * level)) 
     62                    write(self._colours['key']) 
     63                    write(rep) 
     64                    write(self._colours['syntax']) 
     65                    write(': ') 
     66                    self._format(ent, stream, indent, allowance + 1, \ 
     67                        context, level) 
    5368                del context[objid] 
    54             write(',') 
    55             write('\n') 
    56             write(' ' * (indent * (level - 1))) 
     69                write(self._colours['syntax']) 
     70                write(',') 
     71                write('\n') 
     72                write(' ' * (indent * (level - 1))) 
     73            write(self._colours['syntax']) 
    5774            write('}') 
    5875            return 
    5976 
    6077        if (issubclass(typ, list) and r is list.__repr__) or \ 
    61            (issubclass(typ, tuple) and r is tuple.__repr__): 
     78               (issubclass(typ, tuple) and r is tuple.__repr__): 
     79            write(self._colours['syntax']) 
    6280            if issubclass(typ, list): 
    6381                write('[') 
    64                 endchar = ']' 
     82                endchar = self._colours['syntax'] + ']' 
    6583            else: 
    6684                write('(') 
    67                 endchar = ')' 
    68             write('\n') 
    69             write(' ' * (indent * level)) 
     85                endchar = self._colours['syntax'] + ')' 
    7086            length = len(object) 
    7187            if length: 
     88                write('\n') 
     89                write(' ' * (indent * level)) 
    7290                context[objid] = 1 
    73                 self._format(object[0], stream, indent, allowance + 1, context, level) 
    74                 if length > 1: 
    75                     for ent in object[1:]: 
    76                         write(',') 
    77                         write('\n') 
    78                         write(' ' * (indent * level)) 
    79                         self._format(ent, stream, indent, allowance + 1, context, level) 
     91                self._format(object[0], stream, indent, allowance + 1, \ 
     92                    context, level) 
     93                for ent in object[1:]: 
     94                    write(self._colours['syntax']) 
     95                    write(',') 
     96                    write('\n') 
     97                    write(' ' * (indent * level)) 
     98                    self._format(ent, stream, indent, allowance + 1, \ 
     99                        context, level) 
    80100                del context[objid] 
    81             #if issubclass(typ, tuple) and length == 1: 
    82             write(',') 
    83             write('\n') 
    84             write(' ' * (indent * (level - 1))) 
     101                write(self._colours['syntax']) 
     102                write(',') 
     103                write('\n') 
     104                write(' ' * (indent * (level - 1))) 
    85105            write(endchar) 
    86106            return 
    87107 
     108        write(self._colours['value']) 
    88109        write(rep) 
    89110 
     
    92113    printer = MyPrettyPrinter( 
    93114        stream=stream, indent=indent, width=width, depth=depth) 
    94     printer.orig_pprint(object) 
     115    printer.pprint(object) 
    95116 
    96117def __pformat(object, indent=4, width=80, depth=None): 
    97118    """Format a Python object into a pretty-printed representation.""" 
    98     return MyPrettyPrinter(indent=indent, width=width, depth=depth).pformat(object) 
     119    printer = MyPrettyPrinter(indent=indent, width=width, depth=depth) 
     120    return printer.pformat(object) 
    99121 
    100122orig_pprint.orig_pprint = __pprint 
    101 orig_pprint.pformat = __pformat 
     123orig_pprint.orig_pformat = __pformat 
    102124 
    103125pprint = __pprint 
     
    105127 
    106128if __name__ == '__main__': 
     129 
     130    pprint([1, 2, 3, 4]) 
     131    pprint({ 
     132        1: 'a', 
     133        2: 'b', 
     134        3: 'c', 
     135        4: 'd', 
     136    }) 
     137    pprint({ 
     138        1: {}, 
     139        2: {}, 
     140        3: {}, 
     141        4: {}, 
     142    }) 
     143    pprint({ 
     144        1: {1: {}}, 
     145        2: {2: {}}, 
     146        3: {3: {}}, 
     147        4: {4: {}}, 
     148    }) 
     149    pprint({ 
     150        1: [], 
     151        2: [], 
     152        3: [], 
     153        4: [], 
     154    }) 
     155    pprint({ 
     156        'a': [], 
     157        'b': [], 
     158        'c': [], 
     159        'd': [], 
     160    }) 
     161    pprint({ 
     162        1: [[]], 
     163        2: [[]], 
     164        3: [[]], 
     165        4: [[]], 
     166    }) 
     167    pprint({ 
     168        1: (), 
     169        2: (), 
     170        3: (), 
     171        4: (), 
     172    }) 
     173 
    107174    a = {} 
    108175    a[0] = a 
    109     pprint.pprint( 
     176    pprint( 
    110177        [ 
     178            [ 1, 2, 3 ], 
     179            [ 2, 3, 4], 
    111180            a, 
    112181            'list', 
     
    118187            'wow', 
    119188            {'lots': {'of': {'depth': {'goes': 'here'}}}} 
    120         ] 
    121         ,depth=2 
     189        ], 
     190        depth=2, 
    122191    ) 
    123192