Use wiki to format search pages (saves 12 lines)
authorBernie Innocenti <bernie@codewiz.org>
Tue, 23 Mar 2010 02:37:53 +0000 (23:37 -0300)
committerBernie Innocenti <bernie@codewiz.org>
Tue, 23 Mar 2010 02:37:53 +0000 (23:37 -0300)
geekigeeki.py

index 0fdd421cbabcf414780353821d753b0805fef1a1..b3eed3c52d509732419e6ed9546be3aebe3353b6 100755 (executable)
@@ -177,8 +177,8 @@ def link_inline_glob(pattern, descr=None, kvargs={}):
 
 # Search ---------------------------------------------------
 
-def print_search_stats(hits, searched):
-    print("<p>%d hits out of %d pages searched.</p>" % (hits, searched))
+def search_stats(hits, searched):
+    return("%d hits out of %d pages searched.\n" % (hits, searched))
 
 def handle_fullsearch(query, form):
     needle = form['q'].value
@@ -193,20 +193,16 @@ def handle_fullsearch(query, form):
         if count:
             hits.append((count, page_name))
 
-    # The default comparison for tuples compares elements in order,
-    # so this sorts by number of hits
+    # The default comparison for tuples compares elements in order, so this sorts by number of hits
     hits.sort()
     hits.reverse()
 
-    print("<ul>")
+    out = ''
     for (count, page_name) in hits:
-        print('<li><p>' + link_tag(page_name))
-        print(' . . . . ' + `count`)
-        print(['match', 'matches'][count != 1])
-        print('</p></li>')
-    print("</ul>")
+        out += ' * [[' + page_name + ']] . . . ' + str(count) + ' ' + ['match', 'matches'][count != 1] + '\n'
 
-    print_search_stats(len(hits), len(all_pages))
+    out += search_stats(len(hits), len(all_pages))
+    WikiFormatter(out).print_html()
 
 def handle_titlesearch(query, form):
     needle = form['q'].value
@@ -216,12 +212,12 @@ def handle_titlesearch(query, form):
     all_pages = page_list()
     hits = list(filter(needle_re.search, all_pages))
 
-    print("<ul>")
+    out = ''
     for filename in hits:
-        print('<li><p>' + link_tag(filename) + "</p></li>")
-    print("</ul>")
+        out += ' * [[' + filename + ']]\n'
 
-    print_search_stats(len(hits), len(all_pages))
+    out += search_stats(len(hits), len(all_pages))
+    WikiFormatter(out).print_html()
 
 def handle_raw(pagename, form):
     if not file_re.match(pagename):
@@ -282,11 +278,7 @@ def _macro_VERSION(*args, **kvargs):
     return __version__
 
 class WikiFormatter:
-    """Object that turns Wiki markup into HTML.
-
-    All formatting commands can be parsed one line at a time, though
-    some state is carried over between lines.
-    """
+    """Object that turns Wiki markup into HTML."""
     def __init__(self, raw, kvargs=None):
         self.raw = raw
         self.kvargs = kvargs or {}