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