Add support for external macros
[geekigeeki.git] / macros / WordIndex.py
diff --git a/macros/WordIndex.py b/macros/WordIndex.py
new file mode 100755 (executable)
index 0000000..81cd0f9
--- /dev/null
@@ -0,0 +1,31 @@
+def _macro_WordIndex(argv):
+    s = make_index_key()
+    pages = list(page_list())
+    map = {}
+    word_re = re.compile('[A-Z][a-z]+')
+    for name in pages:
+        for word in word_re.findall(name):
+            try:
+                map[word].append(name)
+            except KeyError:
+                map[word] = [name]
+
+    all_words = map.keys()
+    all_words.sort()
+    last_letter = None
+    # set title
+    for word in all_words:
+        letter = word[0].lower()
+        if letter != last_letter:
+            s = s + '; <a name="%s"><h3>%s</h3></a>' % (letter, letter)
+            last_letter = letter
+
+        s = s + '<b>%s</b><ul>' % word
+        links = map[word]
+        links.sort()
+        last_page = None
+        for name in links:
+            if name == last_page: continue
+            s = s + '<li>' + Page(name).link_to()
+        s = s + '</ul>'
+    return s