ESC = chr(0x1B)
RESET = "0"
-COLOURS = range(31, 37)
+COLOURS = [str(x) for x in range(31, 37)]
class ColourMap(object):
def __init__(self):
self._cmap = {}
- self._colourIter = itertools.cycle(ANSI_COLOURS)
+ self._colourIter = itertools.cycle(COLOURS)
- def colourFor(string):
+ def colourFor(self, string):
if not self._cmap.has_key(string):
self._cmap[string] = self._colourIter.next()
return self._cmap[string]
from ConfigParser import SafeConfigParser
from api import Twitter, TwitterError
+import ansi
# Please don't change this, it was provided by the fine folks at Twitter.
# If you change it, it will not work.
return (u"%s %s" %(
status['user']['screen_name'], status['text']))
+class AnsiStatusFormatter(object):
+ def __init__(self):
+ self._colourMap = ansi.ColourMap()
+
+ def __call__(self, status):
+ colour = self._colourMap.colourFor(status['user']['screen_name'])
+ return (u"%s%s%s %s" %(
+ ansi.cmdColour(colour), status['user']['screen_name'],
+ ansi.cmdReset(), status['text']))
+
class VerboseStatusFormatter(object):
def __call__(self, status):
return (u"-- %s (%s) on %s\n%s\n" %(
status_formatters = {
'default': StatusFormatter,
'verbose': VerboseStatusFormatter,
- 'urls': URLStatusFormatter
+ 'urls': URLStatusFormatter,
+ 'ansi': AnsiStatusFormatter
}
admin_formatters = {