chdir into data_dir to simplify a few things
[geekigeeki.git] / macros / WordIndex.py
1 def _macro_WordIndex(*args, **kvargs):
2     s = make_index_key()
3     pages = list(page_list())
4     map = {}
5     word_re = re.compile('[A-Z][a-z]+')
6     for name in pages:
7         for word in word_re.findall(name):
8             try:
9                 map[word].append(name)
10             except KeyError:
11                 map[word] = [name]
12
13     all_words = list(map.keys())
14     all_words.sort()
15     last_letter = None
16     # set title
17     for word in all_words:
18         letter = word[0].lower()
19         if letter != last_letter:
20             s += '<a name="%s"><h3>%s</h3></a>' % (letter, letter)
21             last_letter = letter
22
23         s += '<b>%s</b><ul>' % word
24         links = map[word]
25         links.sort()
26         last_page = None
27         for name in links:
28             if name == last_page: continue
29             s += '<li>' + link_tag(name) + '</li>'
30         s += '</ul>'
31     return s