summaryrefslogtreecommitdiff
path: root/pygments/formatters/other.py
diff options
context:
space:
mode:
authorthatch <devnull@localhost>2008-07-26 10:16:27 -0700
committerthatch <devnull@localhost>2008-07-26 10:16:27 -0700
commitc083e1cc5e0fdba050ea93161833ca61b898f08d (patch)
tree338a3e8a9b65d95cd99c0d2c634aa22f5091c4f5 /pygments/formatters/other.py
parente72c7bcdcc702807daef6e12905fed3be54abfbf (diff)
downloadpygments-c083e1cc5e0fdba050ea93161833ca61b898f08d.tar.gz
Add optional error token colorizing to the !RawTokenFormatter to close #333.
Note: this only makes sense when outputting to a terminal, not as a persistent format to be imported with the !RawTokenLexer.
Diffstat (limited to 'pygments/formatters/other.py')
-rw-r--r--pygments/formatters/other.py29
1 files changed, 26 insertions, 3 deletions
diff --git a/pygments/formatters/other.py b/pygments/formatters/other.py
index bd375f32..fb123689 100644
--- a/pygments/formatters/other.py
+++ b/pygments/formatters/other.py
@@ -11,7 +11,8 @@
from pygments.formatter import Formatter
from pygments.util import get_choice_opt
-
+from pygments.token import Token
+from pygments.console import colorize
__all__ = ['NullFormatter', 'RawTokenFormatter']
@@ -46,6 +47,11 @@ class RawTokenFormatter(Formatter):
`compress`
If set to ``'gz'`` or ``'bz2'``, compress the output with the given
compression algorithm after encoding (default: ``''``).
+ `error_color`
+ If set to a color name, highlight error tokens using that color. If
+ set but with no value, defaults to ``'red'``.
+ *New in Pygments 0.11.*
+
"""
name = 'Raw tokens'
aliases = ['raw', 'tokens']
@@ -57,6 +63,15 @@ class RawTokenFormatter(Formatter):
Formatter.__init__(self, **options)
self.compress = get_choice_opt(options, 'compress',
['', 'none', 'gz', 'bz2'], '')
+ self.error_color = options.get('error_color', None)
+ if self.error_color is True:
+ self.error_color = 'red'
+ if self.error_color is not None:
+ try:
+ colorize(self.error_color, '')
+ except KeyError:
+ raise ValueError("Invalid color %r specified" %
+ self.error_color)
def format(self, tokensource, outfile):
if self.compress == 'gz':
@@ -78,6 +93,14 @@ class RawTokenFormatter(Formatter):
lasttype = None
lastval = u''
- for ttype, value in tokensource:
- write("%s\t%r\n" % (ttype, value))
+ if self.error_color:
+ for ttype, value in tokensource:
+ line = "%s\t%r\n" % (ttype, value)
+ if ttype is Token.Error:
+ write(colorize(self.error_color, line))
+ else:
+ write(line)
+ else:
+ for ttype, value in tokensource:
+ write("%s\t%r\n" % (ttype, value))
flush()