]> jfr.im git - z_archive/twitter.git/commitdiff
Support for colours in command-line tool.
authorMike Verdone <redacted>
Wed, 18 Feb 2009 06:07:01 +0000 (23:07 -0700)
committerMike Verdone <redacted>
Wed, 18 Feb 2009 06:07:01 +0000 (23:07 -0700)
twitter/ansi.py
twitter/cmdline.py

index d0233f28475bef15aeedbe8d76017aaba39e619a..870dec2b5720fe3e98dd20a3adacb328eec7fc54 100644 (file)
@@ -8,14 +8,14 @@ import itertools
 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]
index 061c0f2d04d1c1189367e95ff575b23c0bc1aa3e..4e0552210a32380a9396bdb029b7e72a0076450d 100644 (file)
@@ -48,6 +48,7 @@ import os.path
 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.
@@ -96,6 +97,16 @@ class StatusFormatter(object):
         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" %(
@@ -133,7 +144,8 @@ class URLAdminFormatter(object):
 status_formatters = {
     'default': StatusFormatter,
     'verbose': VerboseStatusFormatter,
-    'urls': URLStatusFormatter
+    'urls': URLStatusFormatter,
+    'ansi': AnsiStatusFormatter
 }    
 
 admin_formatters = {