diff options
author | Sergey Poznyakoff <gray@gnu.org> | 2015-07-06 08:05:31 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org> | 2015-07-06 08:05:31 +0300 |
commit | f3378aebac7e89000ff097ac51c49b62eb6e9f08 (patch) | |
tree | cdf7a9b58b52cd6e995ddf63ef05526e60a918f1 /wiki2html.py | |
parent | 7ab9949e2c038ee6a7215d91896f2b47a5e7c06d (diff) | |
download | wikitrans-f3378aebac7e89000ff097ac51c49b62eb6e9f08.tar.gz wikitrans-f3378aebac7e89000ff097ac51c49b62eb6e9f08.tar.bz2 |
Redo parse tree as a sequence of dictionaries, instead of arrays.
Diffstat (limited to 'wiki2html.py')
-rw-r--r-- | wiki2html.py | 68 |
1 files changed, 34 insertions, 34 deletions
diff --git a/wiki2html.py b/wiki2html.py index 77cb97a..eee592d 100644 --- a/wiki2html.py +++ b/wiki2html.py @@ -40,9 +40,9 @@ class HtmlWikiMarkup (WikiMarkup): envt = { "unnumbered": { "hdr": "ul", "elt": ["li"] }, - "numbered": { "hdr": "ol", + "numbered": { "hdr": "ol", "elt": ["li"] }, - "defn": { "hdr": "dl", + "defn": { "hdr": "dl", "elt": ["dt","dd"] } } def mktgt(self, tgt, lang = None): @@ -81,10 +81,10 @@ class HtmlWikiMarkup (WikiMarkup): def fmtlink(self, elt, istmpl): - arg = self.format(elt[1][0]) + arg = self.format(elt['content'][0]) text = None - if len(elt[1]) > 1: - s = map(self.format, elt[1]) + if len(elt['content']) > 1: + s = map(self.format, elt['content']) if s[0] == 'disambigR' or s[0] == 'wikiquote': return "" elif len(s) > 1 and s[1] == 'thumb': @@ -129,8 +129,8 @@ class HtmlWikiMarkup (WikiMarkup): return self.fmtlink(elt, True) def str_ref(self, elt): - target = elt[1] - text = self.format(elt[2]) + target = elt['ref'] + text = self.format(elt['content']) return "<a href=\"%s\">%s</a>" % (target, text if (text and text != '') \ else target) @@ -142,30 +142,30 @@ class HtmlWikiMarkup (WikiMarkup): return string def str_it(self, elt): - return "<i>" + self.concat(elt[1]) + "</i>" + return "<i>" + self.concat(elt['content']) + "</i>" def str_bold(self, elt): - return "<b>" + self.concat(elt[1]) + "</b>" + return "<b>" + self.concat(elt['content']) + "</b>" def str_hdr(self, elt): - level = elt[1] + 1 + level = elt['level'] + 1 if level > 4: level = 4 - return "<h%s>%s</h%s>" % (level, self.format(elt[2]), level) + return "<h%s>%s</h%s>" % (level, self.format(elt['content']), level) def str_bar(self): return "<hr/>" def str_env(self, elt): - type = elt[1] - lev = elt[2] + type = elt['envtype'] + lev = elt['level'] if lev > 4: lev = 2 string = "" - for s in elt[3]: - n = s[1]; + for s in elt['content']: + n = s['subtype']; string += "<%s>%s</%s>" % (self.envt[type]["elt"][n], - self.format(s[2]), + self.format(s['content']), self.envt[type]["elt"][n]) return "<%s>%s</%s>" % (self.envt[type]["hdr"], string, @@ -174,45 +174,45 @@ class HtmlWikiMarkup (WikiMarkup): def str_para(self, elt): string = ""; - for x in elt[1]: + for x in elt['content']: string += self.format(x) return "<p>" + string + "</p>" def str_ind(self, elt): - return (" " * 2 * elt[1]) + self.format(elt[2]) + return (" " * 2 * elt['level']) + self.format(elt['content']) def format(self, elt): - if elt[0] == TEXT: - if isinstance(elt[1],list): + if elt['type'] == 'TEXT': + if isinstance(elt['content'],list): string = "" - for s in elt[1]: + for s in elt['content']: string += s else: - string = elt[1] + string = elt['content'] return string - elif elt[0] == PARA: + elif elt['type'] == 'PARA': return self.str_para(elt) - elif elt[0] == IT: + elif elt['type'] == 'IT': return self.str_it(elt) - elif elt[0] == BOLD: + elif elt['type'] == 'BOLD': return self.str_bold(elt) - elif elt[0] == LINK: + elif elt['type'] == 'LINK': return self.str_link(elt) - elif elt[0] == TMPL: + elif elt['type'] == 'TMPL': return self.str_tmpl(elt) - elif elt[0] == BAR: + elif elt['type'] == 'BAR': return self.str_bar() - elif elt[0] == HDR: + elif elt['type'] == 'HDR': return self.str_hdr(elt) - elif elt[0] == REF: + elif elt['type'] == 'REF': return self.str_ref(elt) - elif elt[0] == ENV: + elif elt['type'] == 'ENV': return self.str_env(elt) - elif elt[0] == IND: + elif elt['type'] == 'IND': return self.str_ind(elt) - elif elt[0] == SEQ: + elif elt['type'] == 'SEQ': string = "" - for x in elt[1]: + for x in elt['content']: string += self.format(x) return string else: |