diff options
-rw-r--r-- | wiki2html.py | 68 | ||||
-rw-r--r-- | wiki2text.py | 60 | ||||
-rw-r--r-- | wikimarkup.py | 257 |
3 files changed, 192 insertions, 193 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): | |||
40 | 40 | ||
41 | envt = { "unnumbered": { "hdr": "ul", | 41 | envt = { "unnumbered": { "hdr": "ul", |
42 | "elt": ["li"] }, | 42 | "elt": ["li"] }, |
43 | "numbered": { "hdr": "ol", | 43 | "numbered": { "hdr": "ol", |
44 | "elt": ["li"] }, | 44 | "elt": ["li"] }, |
45 | "defn": { "hdr": "dl", | 45 | "defn": { "hdr": "dl", |
46 | "elt": ["dt","dd"] } } | 46 | "elt": ["dt","dd"] } } |
47 | 47 | ||
48 | def mktgt(self, tgt, lang = None): | 48 | def mktgt(self, tgt, lang = None): |
@@ -81,10 +81,10 @@ class HtmlWikiMarkup (WikiMarkup): | |||
81 | 81 | ||
82 | 82 | ||
83 | def fmtlink(self, elt, istmpl): | 83 | def fmtlink(self, elt, istmpl): |
84 | arg = self.format(elt[1][0]) | 84 | arg = self.format(elt['content'][0]) |
85 | text = None | 85 | text = None |
86 | if len(elt[1]) > 1: | 86 | if len(elt['content']) > 1: |
87 | s = map(self.format, elt[1]) | 87 | s = map(self.format, elt['content']) |
88 | if s[0] == 'disambigR' or s[0] == 'wikiquote': | 88 | if s[0] == 'disambigR' or s[0] == 'wikiquote': |
89 | return "" | 89 | return "" |
90 | elif len(s) > 1 and s[1] == 'thumb': | 90 | elif len(s) > 1 and s[1] == 'thumb': |
@@ -129,8 +129,8 @@ class HtmlWikiMarkup (WikiMarkup): | |||
129 | return self.fmtlink(elt, True) | 129 | return self.fmtlink(elt, True) |
130 | 130 | ||
131 | def str_ref(self, elt): | 131 | def str_ref(self, elt): |
132 | target = elt[1] | 132 | target = elt['ref'] |
133 | text = self.format(elt[2]) | 133 | text = self.format(elt['content']) |
134 | return "<a href=\"%s\">%s</a>" % (target, | 134 | return "<a href=\"%s\">%s</a>" % (target, |
135 | text if (text and text != '') \ | 135 | text if (text and text != '') \ |
136 | else target) | 136 | else target) |
@@ -142,30 +142,30 @@ class HtmlWikiMarkup (WikiMarkup): | |||
142 | return string | 142 | return string |
143 | 143 | ||
144 | def str_it(self, elt): | 144 | def str_it(self, elt): |
145 | return "<i>" + self.concat(elt[1]) + "</i>" | 145 | return "<i>" + self.concat(elt['content']) + "</i>" |
146 | 146 | ||
147 | def str_bold(self, elt): | 147 | def str_bold(self, elt): |
148 | return "<b>" + self.concat(elt[1]) + "</b>" | 148 | return "<b>" + self.concat(elt['content']) + "</b>" |
149 | 149 | ||
150 | def str_hdr(self, elt): | 150 | def str_hdr(self, elt): |
151 | level = elt[1] + 1 | 151 | level = elt['level'] + 1 |
152 | if level > 4: | 152 | if level > 4: |
153 | level = 4 | 153 | level = 4 |
154 | return "<h%s>%s</h%s>" % (level, self.format(elt[2]), level) | 154 | return "<h%s>%s</h%s>" % (level, self.format(elt['content']), level) |
155 | 155 | ||
156 | def str_bar(self): | 156 | def str_bar(self): |
157 | return "<hr/>" | 157 | return "<hr/>" |
158 | 158 | ||
159 | def str_env(self, elt): | 159 | def str_env(self, elt): |
160 | type = elt[1] | 160 | type = elt['envtype'] |
161 | lev = elt[2] | 161 | lev = elt['level'] |
162 | if lev > 4: | 162 | if lev > 4: |
163 | lev = 2 | 163 | lev = 2 |
164 | string = "" | 164 | string = "" |
165 | for s in elt[3]: | 165 | for s in elt['content']: |
166 | n = s[1]; | 166 | n = s['subtype']; |
167 | string += "<%s>%s</%s>" % (self.envt[type]["elt"][n], | 167 | string += "<%s>%s</%s>" % (self.envt[type]["elt"][n], |
168 | self.format(s[2]), | 168 | self.format(s['content']), |
169 | self.envt[type]["elt"][n]) | 169 | self.envt[type]["elt"][n]) |
170 | return "<%s>%s</%s>" % (self.envt[type]["hdr"], | 170 | return "<%s>%s</%s>" % (self.envt[type]["hdr"], |
171 | string, | 171 | string, |
@@ -174,45 +174,45 @@ class HtmlWikiMarkup (WikiMarkup): | |||
174 | 174 | ||
175 | def str_para(self, elt): | 175 | def str_para(self, elt): |
176 | string = ""; | 176 | string = ""; |
177 | for x in elt[1]: | 177 | for x in elt['content']: |
178 | string += self.format(x) | 178 | string += self.format(x) |
179 | return "<p>" + string + "</p>" | 179 | return "<p>" + string + "</p>" |
180 | 180 | ||
181 | def str_ind(self, elt): | 181 | def str_ind(self, elt): |
182 | return (" " * 2 * elt[1]) + self.format(elt[2]) | 182 | return (" " * 2 * elt['level']) + self.format(elt['content']) |
183 | 183 | ||
184 | def format(self, elt): | 184 | def format(self, elt): |
185 | if elt[0] == TEXT: | 185 | if elt['type'] == 'TEXT': |
186 | if isinstance(elt[1],list): | 186 | if isinstance(elt['content'],list): |
187 | string = "" | 187 | string = "" |
188 | for s in elt[1]: | 188 | for s in elt['content']: |
189 | string += s | 189 | string += s |
190 | else: | 190 | else: |
191 | string = elt[1] | 191 | string = elt['content'] |
192 | return string | 192 | return string |
193 | elif elt[0] == PARA: | 193 | elif elt['type'] == 'PARA': |
194 | return self.str_para(elt) | 194 | return self.str_para(elt) |
195 | elif elt[0] == IT: | 195 | elif elt['type'] == 'IT': |
196 | return self.str_it(elt) | 196 | return self.str_it(elt) |
197 | elif elt[0] == BOLD: | 197 | elif elt['type'] == 'BOLD': |
198 | return self.str_bold(elt) | 198 | return self.str_bold(elt) |
199 | elif elt[0] == LINK: | 199 | elif elt['type'] == 'LINK': |
200 | return self.str_link(elt) | 200 | return self.str_link(elt) |
201 | elif elt[0] == TMPL: | 201 | elif elt['type'] == 'TMPL': |
202 | return self.str_tmpl(elt) | 202 | return self.str_tmpl(elt) |
203 | elif elt[0] == BAR: | 203 | elif elt['type'] == 'BAR': |
204 | return self.str_bar() | 204 | return self.str_bar() |
205 | elif elt[0] == HDR: | 205 | elif elt['type'] == 'HDR': |
206 | return self.str_hdr(elt) | 206 | return self.str_hdr(elt) |
207 | elif elt[0] == REF: | 207 | elif elt['type'] == 'REF': |
208 | return self.str_ref(elt) | 208 | return self.str_ref(elt) |
209 | elif elt[0] == ENV: | 209 | elif elt['type'] == 'ENV': |
210 | return self.str_env(elt) | 210 | return self.str_env(elt) |
211 | elif elt[0] == IND: | 211 | elif elt['type'] == 'IND': |
212 | return self.str_ind(elt) | 212 | return self.str_ind(elt) |
213 | elif elt[0] == SEQ: | 213 | elif elt['type'] == 'SEQ': |
214 | string = "" | 214 | string = "" |
215 | for x in elt[1]: | 215 | for x in elt['content']: |
216 | string += self.format(x) | 216 | string += self.format(x) |
217 | return string | 217 | return string |
218 | else: | 218 | else: |
diff --git a/wiki2text.py b/wiki2text.py index 005e551..c94ae51 100644 --- a/wiki2text.py +++ b/wiki2text.py | |||
@@ -66,9 +66,9 @@ class TextWikiMarkup (WikiMarkup): | |||
66 | return self.html_base % { 'lang' : lang } + urllib.quote(tgt) | 66 | return self.html_base % { 'lang' : lang } + urllib.quote(tgt) |
67 | 67 | ||
68 | def fmtlink(self, elt, istmpl): | 68 | def fmtlink(self, elt, istmpl): |
69 | arg = self.format(elt[1][0]) | 69 | arg = self.format(elt['content'][0]) |
70 | if len(elt[1]) > 1: | 70 | if len(elt['content']) > 1: |
71 | s = map(self.format, elt[1]) | 71 | s = map(self.format, elt['content']) |
72 | text = s[1] | 72 | text = s[1] |
73 | else: | 73 | else: |
74 | s = None | 74 | s = None |
@@ -143,10 +143,10 @@ class TextWikiMarkup (WikiMarkup): | |||
143 | return output + linebuf | 143 | return output + linebuf |
144 | 144 | ||
145 | def format(self, elt): | 145 | def format(self, elt): |
146 | if elt[0] == TEXT: | 146 | if elt['type'] == 'TEXT': |
147 | if isinstance(elt[1],list): | 147 | if isinstance(elt['content'],list): |
148 | string = "" | 148 | string = "" |
149 | for s in elt[1]: | 149 | for s in elt['content']: |
150 | if string: | 150 | if string: |
151 | if string.endswith("."): | 151 | if string.endswith("."): |
152 | string += " " | 152 | string += " " |
@@ -154,22 +154,22 @@ class TextWikiMarkup (WikiMarkup): | |||
154 | string += " " | 154 | string += " " |
155 | string += s | 155 | string += s |
156 | else: | 156 | else: |
157 | string = elt[1] | 157 | string = elt['content'] |
158 | elif elt[0] == PARA: | 158 | elif elt['type'] == 'PARA': |
159 | string = ""; | 159 | string = ""; |
160 | for x in elt[1]: | 160 | for x in elt['content']: |
161 | string += self.format(x) | 161 | string += self.format(x) |
162 | string = self.fmtpara(string) + '\n\n' | 162 | string = self.fmtpara(string) + '\n\n' |
163 | elif elt[0] == IT: | 163 | elif elt['type'] == 'IT': |
164 | string = "" | 164 | string = "" |
165 | for x in elt[1]: | 165 | for x in elt['content']: |
166 | s = self.format(x) | 166 | s = self.format(x) |
167 | if s: | 167 | if s: |
168 | string += " " + s | 168 | string += " " + s |
169 | string = "_" + string.lstrip(" ") + "_" | 169 | string = "_" + string.lstrip(" ") + "_" |
170 | elif elt[0] == BOLD: | 170 | elif elt['type'] == 'BOLD': |
171 | string = "" | 171 | string = "" |
172 | for x in elt[1]: | 172 | for x in elt['content']: |
173 | s = self.format(x) | 173 | s = self.format(x) |
174 | if s: | 174 | if s: |
175 | if string.endswith("."): | 175 | if string.endswith("."): |
@@ -178,36 +178,36 @@ class TextWikiMarkup (WikiMarkup): | |||
< |