diff options
Diffstat (limited to 'wiki2html.py')
-rw-r--r-- | wiki2html.py | 53 |
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): |