diff options
author | Sergey Poznyakoff <gray@gnu.org> | 2018-08-16 15:45:00 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org> | 2018-08-17 13:17:11 +0300 |
commit | 7186dbab7f1c1227e9229866e086bc417e3e4e52 (patch) | |
tree | f29114e9ff7a7b023dd3d611a9bc8808f5cf5bbd /wikitrans | |
parent | d9e26129527ce84f626eb44ff95e4ecfbc5bc92a (diff) | |
download | wikitrans-7186dbab7f1c1227e9229866e086bc417e3e4e52.tar.gz wikitrans-7186dbab7f1c1227e9229866e086bc417e3e4e52.tar.bz2 |
Fix PEP 8 issues.
Diffstat (limited to 'wikitrans')
-rw-r--r-- | wikitrans/__init__.py | 26 | ||||
-rw-r--r-- | wikitrans/wiki2html.py | 320 | ||||
-rw-r--r-- | wikitrans/wiki2texi.py | 410 | ||||
-rw-r--r-- | wikitrans/wiki2text.py | 348 | ||||
-rw-r--r-- | wikitrans/wikidump.py | 77 | ||||
-rw-r--r-- | wikitrans/wikimarkup.py | 1285 | ||||
-rw-r--r-- | wikitrans/wikins.py | 3040 | ||||
-rw-r--r-- | wikitrans/wikitoken.py | 318 |
8 files changed, 5824 insertions, 0 deletions
diff --git a/wikitrans/__init__.py b/wikitrans/__init__.py new file mode 100644 index 0000000..5832e38 --- /dev/null +++ b/wikitrans/__init__.py | |||
@@ -0,0 +1,26 @@ | |||
1 | #!/usr/bin/python | ||
2 | # -*- coding: utf-8 -*- | ||
3 | # Copyright (C) 2008-2018 Sergey Poznyakoff | ||
4 | # | ||
5 | # This program is free software; you can redistribute it and/or modify | ||
6 | # it under the terms of the GNU General Public License as published by | ||
7 | # the Free Software Foundation; either version 3, or (at your option) | ||
8 | # any later version. | ||
9 | # | ||
10 | # This program is distributed in the hope that it will be useful, | ||
11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | # GNU General Public License for more details. | ||
14 | # | ||
15 | # You should have received a copy of the GNU General Public License | ||
16 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
17 | |||
18 | __all__ = [ | ||
19 | "wikitoken", | ||
20 | "wikimarkup", | ||
21 | "wikidump", | ||
22 | "wiki2html", | ||
23 | "wiki2text", | ||
24 | "wiki2texi", | ||
25 | "wikins" | ||
26 | ] | ||
diff --git a/wikitrans/wiki2html.py b/wikitrans/wiki2html.py new file mode 100644 index 0000000..ce65bae --- /dev/null +++ b/wikitrans/wiki2html.py | |||
@@ -0,0 +1,320 @@ | |||
1 | #!/usr/bin/python | ||
2 | # -*- coding: utf-8 -*- | ||
3 | # Copyright (C) 2008-2018 Sergey Poznyakoff | ||
4 | # | ||
5 | # This program is free software; you can redistribute it and/or modify | ||
6 | # it under the terms of the GNU General Public License as published by | ||
7 | # the Free Software Foundation; either version 3, or (at your option) | ||
8 | # any later version. | ||
9 | # | ||
10 | # This program is distributed in the hope that it will be useful, | ||
11 | # but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | # GNU General Public License for more details. | ||
14 | # | ||
15 | # You should have received a copy of the GNU General Public License | ||
16 | # along with this program. If not, see <http://www.gnu.org/licenses/>. | ||
17 | |||
18 | """ | ||
19 | Wiki markup to HTML translator. | ||
20 | |||
21 | Classes: | ||
22 | |||
23 | HtmlWikiMarkup -- Converts Wiki material to HTML. | ||
24 | HtmlWiktionaryMarkup -- Reserved for future use. Currently does the same as | ||
25 | HtmlWikiMarkup. | ||
26 | |||
27 | """ | ||
28 | |||
29 | from __future__ import print_function | ||
30 | from wikitrans.wikimarkup import * | ||
31 | from wikitrans.wikitoken import * | ||
32 | from wikitrans.wikins import wiki_ns_re, wiki_ns | ||
33 | import re | ||
34 | try: | ||
35 | from urllib import quote as url_quote | ||
36 | except ImportError: | ||
37 | from urllib.parse import quote as url_quote | ||
38 | |||
39 | try: | ||
40 | from html import escape as html_escape | ||
41 | except ImportError: | ||
42 | from cgi import escape as html_escape | ||
43 | |||
44 | __all__ = [ "HtmlWikiMarkup", "HtmlWiktionaryMarkup" ] | ||
45 | |||
46 | class HtmlSeqNode(WikiSeqNode): | ||
47 | def format(self): | ||
48 | s = '' | ||
49 | for x in self.content: | ||
50 | s += x.format() | ||
51 | return s | ||
52 | |||
53 | class HtmlLinkNode(HtmlSeqNode): | ||
54 | def format(self): | ||
55 | arg = self.content[0].format() | ||
56 | text = None | ||
57 | if len(self.content) > 1: | ||
58 | s = [x for x in map(lambda x: x.format(), self.content)] | ||
59 | if s[0] == 'disambigR' or s[0] == 'wikiquote': | ||
60 | return "" | ||
61 | elif len(s) > 1 and s[1] == 'thumb': | ||
62 | return "" | ||
63 | text = '<span class="template">' + s[1] + '</span>' | ||
64 | if self.type == 'TMPL': | ||
65 | if re.match("t[+-]$", s[0]): | ||
66 | if len(s) > 2: | ||
67 | text = s[2] | ||
68 | elif s[0] == "term": | ||
69 | text = self.parser.tmpl_term(s) | ||
70 | elif s[0] == "proto": | ||
71 | text = self.parser.tmpl_proto(s) | ||
72 | return text | ||
73 | |||
74 | (qual,sep,tgt) = arg.partition(':') | ||
75 | if tgt != '': | ||
76 | ns = self.parser.wiki_ns_name(qual) | ||
77 | if ns: | ||
78 | if ns == 'NS_IMAGE': | ||
79 | return '' | ||
80 | elif ns == 'NS_MEDIA': | ||
81 | tgt = self.parser.media_base + '/' + tgt | ||
82 | else: | ||
83 | tgt = self.parser.mktgt(tgt) | ||
84 | elif self.type == 'LINK' and qual in self.parser.langtab: | ||
85 | tgt = self.parser.mktgt(tgt, qual) | ||
86 | if not text or text == '': | ||
87 | text = self.parser.langtab[qual] | ||
88 | else: | ||
89 | tgt = self.parser.mktgt(tgt) | ||
90 | else: | ||
91 | tgt = self.parser.mktgt(arg) | ||
92 | return "<a href=\"%s\">%s</a>" % (tgt, | ||
93 | text if (text and text != '') else arg) | ||
94 | |||
95 | class HtmlRefNode(WikiRefNode): | ||
96 | def format(self): | ||
97 | target = self.ref | ||
98 | text = self.content.format() | ||
99 | return "<a href=\"%s\">%s</a>" % ( | ||
100 | target, | ||
101 | text if (text and text != '') else target | ||
102 | ) | ||
103 | |||
104 | class HtmlFontNode(HtmlSeqNode): | ||
105 | def format(self): | ||
106 | comm = { 'IT': 'i', | ||
107 | 'BOLD': 'b' } | ||
108 | s = '<%s>' % comm[self.type] | ||
109 | for x in self.content: | ||
110 | s += x.format() | ||
111 | s += '</%s>' % comm[self.type] | ||
112 | return s | ||
113 | |||
114 | class HtmlTextNode(HtmlSeqNode): | ||
115 | def format(self): | ||
116 | if isinstance(self.content,list): | ||
117 | s = ''.join(self.content) | ||
118 | else: | ||
119 | s = html_escape(self.content, quote=False) | ||
120 | return s | ||
121 | |||
122 | class HtmlHdrNode(WikiHdrNode): | ||
123 | def format(self): | ||
124 | level = self.level | ||
125 | if level > 6: | ||
126 | level = 6 | ||
127 | return "<h%s>%s</h%s>\n\n" % (level, self.content.format(), level) | ||
128 | |||
129 | class HtmlBarNode(WikiNode): | ||
130 | def format(self): | ||
131 | return "<hr/>\n" | ||
132 | |||
133 | class HtmlEnvNode(WikiEnvNode): | ||
134 | def format(self): | ||
135 | type = self.envtype | ||
136 | lev = self.level | ||
137 | if lev > 4: | ||
138 | lev = 2 | ||
139 | string = "" | ||
140 | for s in self.content: | ||
141 | n = s.subtype; | ||
142 | string += "<%s>%s</%s>" % (self.parser.envt[type]["elt"][n], | ||
143 | s.content.format(), | ||
144 | self.parser.envt[type]["elt"][n]) | ||
145 | return "<%s>%s</%s>" % (self.parser.envt[type]["hdr"], | ||
146 | string, | ||
147 | self.parser.envt[type]["hdr"]) | ||
148 | return string | ||
149 | |||
150 | class HtmlTagNode(WikiTagNode): | ||
151 | def format(self): | ||
152 | if self.tag == 'code': | ||
153 | self.parser.nested += 1 | ||
154 | s = self.content.format() | ||
155 | self.parser.nested -= 1 | ||
156 | return '<pre><code>' + s + '</code></pre>' #FIXME | ||
157 | elif self.tag == 'ref': | ||
158 | n = self.idx+1 | ||
159 | return '<sup id="cite_ref-%d" class="reference"><a name="cite_ref-%d" href=#cite_note-%d">%d</a></sup>' % (n,n,n,n) | ||
160 | elif self.tag == 'references': | ||
161 | s = '<div class="references">\n' | ||
162 | s += '<ol class="references">\n' | ||
163 | n = 0 | ||
164 | for ref in self.parser.references: | ||
165 | n += 1 | ||
166 | s += ('<li id="cite_note-%d">' | ||
167 | + '<span class="mw-cite-backlink">' | ||
168 | + '<b><a href="#cite_ref-%d">^</a></b>' | ||
169 | + '</span>' | ||
170 | + '<span class="reference-text">' | ||
171 | + ref.content.format() | ||
172 | + '</span>' | ||
173 | + '</li>\n') % (n,n) | ||
174 | s += '</ol>\n</div>\n' | ||
175 | return s | ||
176 | else: | ||
177 | s = '<' + self.tag | ||
178 | if self.args: | ||
179 | s += ' ' + str(self.args) | ||
180 | s += '>' | ||
181 | s += self.content.format() | ||
182 | return s + '</' + self.tag + '>' | ||
183 | |||
184 | class HtmlParaNode(HtmlSeqNode): | ||
185 | def format(self): | ||
186 | return "<p>" + super(HtmlParaNode, self).format() + "</p>\n" | ||
187 | |||
188 |