[wwwsearch-commits] r31956 - wwwsearch/release_scripts

jjlee at codespeak.net jjlee at codespeak.net
Sat Sep 2 21:16:45 CEST 2006


Author: jjlee
Date: Sat Sep  2 21:16:44 2006
New Revision: 31956

Modified:
   wwwsearch/release_scripts/colorize.py
Log:
Accept unicode strings as input (just str() them); Add unit test; Add a colorize_ex function that doesn't print; Don't use module string, where possible

Modified: wwwsearch/release_scripts/colorize.py
==============================================================================
--- wwwsearch/release_scripts/colorize.py	(original)
+++ wwwsearch/release_scripts/colorize.py	Sat Sep  2 21:16:44 2006
@@ -37,22 +37,42 @@
 
 def colorize(text):
     # for use with EmPy
+    print colorize_ex(text)
+
+def colorize_ex(text):
     from StringIO import StringIO
+    text = str(text)  # we don't like unicode
     inp = StringIO(text)
     out = StringIO()
     Parser(inp.read(), out).format(None, None)
-    print out.getvalue()
+    return out.getvalue()
 
 
 class Parser:
     """ Send colored python source.
+
+    >>> colorize('import blah\\n\\ndef foo():\\n    blah()\\nprint "bye"\\n#comment\\n')
+    <pre><span class="pykw">import</span> blah
+    <BLANKLINE>
+    <span class="pykw">def</span> foo():
+        blah()
+    <span class="pykw">print</span> <span class="pystr">"bye"</span>
+    <span class="pycmt">#comment</span></pre>
+
+    >>> colorize(u'import blah\\n\\ndef foo():\\n    blah()\\nprint "bye"\\n#comment\\n')
+    <pre><span class="pykw">import</span> blah
+    <BLANKLINE>
+    <span class="pykw">def</span> foo():
+        blah()
+    <span class="pykw">print</span> <span class="pystr">"bye"</span>
+    <span class="pycmt">#comment</span></pre>
+
     """
 
     def __init__(self, raw, out = sys.stdout):
         """ Store the source text.
         """
-        #self.raw = string.strip(string.expandtabs(raw))
-        self.raw = string.rstrip(string.expandtabs(raw))
+        self.raw = string.expandtabs(raw).rstrip()
         self.out = out
 
     def format(self, formatter, form):
@@ -62,7 +82,7 @@
         self.lines = [0, 0]
         pos = 0
         while 1:
-            pos = string.find(self.raw, '\n', pos) + 1
+            pos = self.raw.find('\n', pos) + 1
             if not pos: break
             self.lines.append(pos)
         self.lines.append(len(self.raw))
@@ -125,7 +145,11 @@
             self.out.write('</span>')
 
 
-def testmain():
+def test_main():
+    import doctest
+    doctest.testmod()
+
+def demo():
     import os, sys
     print "Formatting..."
 
@@ -143,4 +167,4 @@
 
 
 if __name__ == "__main__":
-    testmain()
+    test_main()


More information about the wwwsearch-commits mailing list