summaryrefslogtreecommitdiff
path: root/wiki2html.py
diff options
context:
space:
mode:
Diffstat (limited to 'wiki2html.py')
-rw-r--r--wiki2html.py53
1 files changed, 47 insertions, 6 deletions
diff --git a/wiki2html.py b/wiki2html.py
index 5a8fdcc..faab18b 100644
--- a/wiki2html.py
+++ b/wiki2html.py
@@ -18,6 +18,7 @@
from wikimarkup import *
from types import TupleType
from wikins import wiki_ns_re, wiki_ns
+import re
import urllib
class HtmlWikiMarkup (WikiMarkup):
@@ -45,13 +46,53 @@ class HtmlWikiMarkup (WikiMarkup):
if not lang:
lang = self.lang
return self.html_base % { 'lang' : lang } + urllib.quote(tgt)
+
+ def tmpl_term(self, s):
+ if len(s) == 2:
+ return s[1]
+ text = None
+ trans = None
+ for x in s[1:]:
+ m = re.match('(\w+)=', x)
+ if m:
+ if m.group(1) == "tr":
+ trans = x[m.end(1)+1:]
+ elif not text:
+ text = x
+ if text:
+ if trans:
+ text += ' <span class="trans">[' + trans + ']</span>'
+ return text
+
+ def tmpl_proto(self, s):
+ text = '<span class="proto-lang">Proto-' + s[1] + '</span>'
+ if len(s) >= 4:
+ n = 0
+ for x in s[2:-2]:
+ if n > 0:
+ text += ','
+ n += 1
+ text += ' <span class="proto">' + x + '</span>'
+ text += ' <span class="meaning">(' + s[-2] + ')</span>'
+ return text
+
def fmtlink(self, elt, istmpl):
arg = self.format(elt[1][0])
+ text = None
if len(elt[1]) > 1:
- text = self.format(elt[1][1])
- else:
- text = None
+ text = '<span class="template">' + self.format(elt[1][1]) + '</span>'
+ if istmpl:
+ s = map(self.format, elt[1])
+ if re.match("t[+-]$", s[0]):
+ if len(s) > 2:
+ text = s[2]
+ elif s[0] == "term":
+ text = self.tmpl_term(s)
+ elif s[0] == "proto":
+ text = self.tmpl_proto(s)
+ return text
+
(qual,sep,tgt) = arg.partition(':')
if tgt != '':
ns = self.wiki_ns_name(qual)
@@ -89,10 +130,10 @@ class HtmlWikiMarkup (WikiMarkup):
else arg)
def str_link(self, elt):
- return self.fmtlink(elt, False) + " "
+ return self.fmtlink(elt, False)
def str_tmpl(self, elt):
- return self.fmtlink(elt, True) + " "
+ return self.fmtlink(elt, True)
def str_ref(self, elt):
target = elt[1]
@@ -104,7 +145,7 @@ class HtmlWikiMarkup (WikiMarkup):
def concat(self, eltlist):
string = ""
for x in eltlist:
- string += " " + self.format(x)
+ string += self.format(x)
return string
def str_it(self, elt):

Return to:

Send suggestions and report system problems to the System administrator.