Move wiki macros into sys/
authorBernie Innocenti <bernie@codewiz.org>
Wed, 19 Aug 2009 09:26:52 +0000 (11:26 +0200)
committerBernie Innocenti <bernie@codewiz.org>
Wed, 19 Aug 2009 09:26:52 +0000 (11:26 +0200)
sys/macros/CgiVar.py [new file with mode: 0644]
sys/macros/HttpGet.py [new file with mode: 0644]
sys/macros/HttpPost.py [new file with mode: 0644]
sys/macros/TitleIndex.py [new file with mode: 0644]
sys/macros/WordIndex.py [new file with mode: 0644]

diff --git a/sys/macros/CgiVar.py b/sys/macros/CgiVar.py
new file mode 100644 (file)
index 0000000..c2ba707
--- /dev/null
@@ -0,0 +1,9 @@
+#acl bernie:read,write All:read
+
+def _macro_CgiVar(*args, **kvargs):
+    return {
+        'REMOTE_USER': remote_user(),
+        'REMOTE_HOST': get_hostname(remote_host()),
+        'REMOTE_ADDR': remote_host(),
+        'QUERY_STRING': relative_url(query_string()),
+    }[args[1]]
diff --git a/sys/macros/HttpGet.py b/sys/macros/HttpGet.py
new file mode 100644 (file)
index 0000000..dfe1dfb
--- /dev/null
@@ -0,0 +1,8 @@
+#acl bernie:read,write All:read
+
+def _macro_HttpGet(*args, **kvargs):
+    if args[1] in form:
+        return form[args[1]].value
+    elif len(args) > 2:
+        return args[2] # default value
+    raise Exception("Undefined argument " + args[1])
diff --git a/sys/macros/HttpPost.py b/sys/macros/HttpPost.py
new file mode 100644 (file)
index 0000000..fbe277a
--- /dev/null
@@ -0,0 +1,8 @@
+#acl bernie:read,write All:read
+
+def _macro_HttpPost(*args, **kvargs):
+    if args[1] in form:
+        return form[argv[1]].value
+    elif len(args) > 2:
+        return args[2] # default value
+    raise Exception("Undefined argument " + args[1])
diff --git a/sys/macros/TitleIndex.py b/sys/macros/TitleIndex.py
new file mode 100644 (file)
index 0000000..9f5c25b
--- /dev/null
@@ -0,0 +1,16 @@
+#acl bernie:read,write All:read
+
+def _macro_TitleIndex(*args, **kvargs):
+    s = make_index_key()
+    pages = list(page_list())
+    pages.sort()
+    current_letter = None
+    for name in pages:
+        letter = name[0].lower()
+        if letter != current_letter:
+            s += '<a name="%s"><h3>%s</h3></a>' % (letter, letter)
+            current_letter = letter
+        else:
+            s += '<br />'
+        s += link_tag(name)
+    return s
diff --git a/sys/macros/WordIndex.py b/sys/macros/WordIndex.py
new file mode 100644 (file)
index 0000000..635ef6b
--- /dev/null
@@ -0,0 +1,33 @@
+#acl bernie:read,write All:read
+
+def _macro_WordIndex(*args, **kvargs):
+    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 = list(map.keys())
+    all_words.sort()
+    last_letter = None
+    # set title
+    for word in all_words:
+        letter = word[0].lower()
+        if letter != last_letter:
+            s += '<a name="%s"><h3>%s</h3></a>' % (letter, letter)
+            last_letter = letter
+
+        s += '<b>%s</b><ul>' % word
+        links = map[word]
+        links.sort()
+        last_page = None
+        for name in links:
+            if name == last_page: continue
+            s += '<li>' + link_tag(name) + '</li>'
+        s += '</ul>'
+    return s