aboutsummaryrefslogtreecommitdiff
path: root/wiki2text.py
diff options
context:
space:
mode:
Diffstat (limited to 'wiki2text.py')
-rw-r--r--wiki2text.py20
1 files changed, 12 insertions, 8 deletions
diff --git a/wiki2text.py b/wiki2text.py
index 916391e..5041ea0 100644
--- a/wiki2text.py
+++ b/wiki2text.py
@@ -6,28 +6,32 @@
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3, or (at your option)
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
-from wikimarkup import *
-from wikins import wiki_ns_re, wiki_ns
+from wit.wikimarkup import *
+from wit.wikins import wiki_ns_re, wiki_ns
import re
-import urllib
+try:
+ from urllib import quote as url_quote
+except ImportError:
+ from urllib.parse import quote as url_quote
+
class TextWikiMarkup (WikiMarkup):
"""
A (general-purpose Wiki->Text translator class.
"""
# Output width
width = 78
# Do not show references.
references = False
# Provide a minimum markup
markup = True
@@ -49,79 +53,79 @@ class TextWikiMarkup (WikiMarkup):
return "%s (see %s) " % (text, target)
else:
return "see " + target
def wiki_ns_name(self, str):
if str in wiki_ns[self.lang]:
return wiki_ns[self.lang][str]
elif str in wiki_ns_re[self.lang]:
for elt in wiki_ns_re[self.lang][str]:
if str.beginswith(elt[0]) and str.endswith(elt[1]):
return elt[2]
return None
-
+
def mktgt(self, tgt, lang = None):
if not lang:
lang = self.lang
- return self.html_base % { 'lang' : lang } + urllib.quote(tgt)
+ return self.html_base % { 'lang' : lang } + url_quote(tgt)
def fmtlink(self, elt, istmpl):
arg = self.format(elt['content'][0])
if len(elt['content']) > 1:
s = [x for x in map(self.format, elt['content'])]
text = s[1]
else:
s = None
text = None
if s:
if s[0] == 'disambigR' or s[0] == 'wikiquote':
return ""
if len(s) > 1 and s[1] == 'thumb':
return ""
(qual,sep,tgt) = arg.partition(':')
if tgt != '':
ns = self.wiki_ns_name(qual)
if ns:
if ns == 'NS_IMAGE':
if not self.references:
return ""
text = "[%s: %s]" % (qual, text if text else arg)
tgt = self.image_base + '/' + \
- urllib.quote(tgt) + \
- '/250px-' + urllib.quote(tgt)
+ url_quote(tgt) + \
+ '/250px-' + url_quote(tgt)
elif ns == 'NS_MEDIA':
text = "[%s]" % (qual)
else:
tgt = self.mktgt(tgt)
elif not istmpl and qual in self.langtab:
text = self.langtab[qual] + ": " + tgt
tgt = self.mktgt(tgt, qual)
else:
tgt = self.mktgt(tgt)
else:
tgt = self.mktgt(arg)
if self.references:
return "%s (see %s) " % (text, tgt)
elif not text or text == '':
return arg
else:
return text
def indent (self, lev, text):
if text.find('\n') == -1:
s = (" " * lev) + text
else:
s = ""
- for elt in text.split('\n'):
+ for elt in text.decode("utf-8").split('\n'):
if elt:
s += (" " * lev) + elt + '\n'
if not text.endswith('\n'):
s = s.rstrip('\n')
# print "IN: '%s'" % (text)
# print "OUT: '%s'" % (s)
return s
def fmtpara(self, input):
output = ""
linebuf = ""
length = 0

Return to:

Send suggestions and report system problems to the System administrator.