~testdoc-dev/testdoc/trunk.git

« back to all changes in this revision

Viewing changes to testdoc/formatter.py

  • Committer: Andrew Bennetts
  • Date: 2010-09-06 12:34:54 UTC
  • mto: This revision was merged to the branch mainline in revision 19.
  • Revision ID: git-v1:41feac1f263796dd5d1b31634d3b2400213d3687
Add compact, coloured, indented format for interactive use.

Show diffs side-by-side

added added

removed removed

Lines of Context:
61
61
 
62
62
    def paragraph(self, text):
63
63
        self.writeln('%s\n' % (text.strip(),))
 
64
 
 
65
 
 
66
class TrialLikeTreeFormatter(object):
 
67
 
 
68
    def __init__(self, stream):
 
69
        self.stream = stream
 
70
        from twisted.trial import reporter
 
71
        for colorizer in [reporter._Win32Colorizer, reporter._AnsiColorizer,
 
72
                reporter._NullColorizer]:
 
73
            if colorizer.supported(stream):
 
74
                self._colorizer = colorizer(stream)
 
75
                break
 
76
        self._last_indent = 0
 
77
 
 
78
    def write(self, line, indent, colour):
 
79
        if indent is None:
 
80
            indent = self._last_indent + 2
 
81
        else:
 
82
            self._last_indent = indent
 
83
        if colour is None:
 
84
            self.stream.write(' ' * indent + line)
 
85
        else:
 
86
            self._colorizer.write(' ' * indent + line, colour)
 
87
 
 
88
    def title(self, name):
 
89
        self.write(name + '\n', 0, 'green')
 
90
 
 
91
    def section(self, name):
 
92
        self.write(name + '\n', 2, 'yellow')
 
93
 
 
94
    def subsection(self, name):
 
95
        self.write(name + '\n', 4, 'white')
 
96
 
 
97
    def paragraph(self, text):
 
98
        for line in text.strip().splitlines(True):
 
99
            self.write(line, None, None)
 
100
        if not line.endswith('\n'):
 
101
            self.write('\n', None, None)
 
102
 
 
103