diff options
author | Sergey Poznyakoff <gray@gnu.org.ua> | 2015-07-16 13:20:06 +0300 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org.ua> | 2015-07-16 13:26:15 +0300 |
commit | eaf9325ddcff786f3fcd5b9047327ef6e397e778 (patch) | |
tree | 2f0336efbb1deab9651c5eeb1b5dd753538a5c8e | |
parent | 8e11d7f20459697c883df1e421df02006f749792 (diff) | |
download | wikitrans-eaf9325ddcff786f3fcd5b9047327ef6e397e778.tar.gz wikitrans-eaf9325ddcff786f3fcd5b9047327ef6e397e778.tar.bz2 |
Restructure the package.
The idea is to switch from using this project as a git submodule
to having it distributed via PyPI. Since the name 'wit' is already
registered there, the package is renamed to 'wikitrans'.
* setup.py: Use setuptools
Rename package to wikitrans.
* wikicvt.py: Remove. Replaced with:
* bin/wikitrans: New file.
* __init__.py: Move to WikiTrans/__init__.py
* wiki2html.py: Move to WikiTrans/wiki2html.py
* wiki2texi.py: Move to WikiTrans/wiki2texi.py
* wiki2text.py: Move to WikiTrans/wiki2text.py
* wikimarkup.py: Move to WikiTrans/wikimarkup.py
* wikins.py: Move to WikiTrans/wikins.py
* test.py: Move to tests/test.py
* MANIFEST.in: New file.
* README.rst: New file.
* .gitignore: Update.
-rw-r--r-- | .gitignore | 4 | ||||
-rw-r--r-- | MANIFEST.in | 1 | ||||
-rw-r--r-- | README.rst | 3 | ||||
-rw-r--r-- | WikiTrans/__init__.py (renamed from __init__.py) | 2 | ||||
-rw-r--r-- | WikiTrans/wiki2html.py (renamed from wiki2html.py) | 2 | ||||
-rw-r--r-- | WikiTrans/wiki2texi.py (renamed from wiki2texi.py) | 0 | ||||
-rw-r--r-- | WikiTrans/wiki2text.py (renamed from wiki2text.py) | 0 | ||||
-rw-r--r-- | WikiTrans/wikimarkup.py (renamed from wikimarkup.py) | 0 | ||||
-rw-r--r-- | WikiTrans/wikins.py (renamed from wikins.py) | 0 | ||||
-rwxr-xr-x | bin/wikitrans | 129 | ||||
-rw-r--r-- | setup.py | 21 | ||||
-rw-r--r-- | testdata/boldit2.html | 1 | ||||
-rw-r--r-- | tests/test.py (renamed from test.py) | 0 | ||||
-rwxr-xr-x | wikicvt.py | 125 |
14 files changed, 153 insertions, 135 deletions
@@ -1,3 +1,7 @@ *~ *.pyc .emacs.desktop +build/ +dist/ +tmp/ +*.egg-info/ diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..207b54e --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1 @@ +exclude .gitignore diff --git a/README.rst b/README.rst new file mode 100644 index 0000000..587526a --- /dev/null +++ b/README.rst @@ -0,0 +1,3 @@ +MediaWiki Markup Translator +=========================== +FIXME diff --git a/__init__.py b/WikiTrans/__init__.py index b839db8..ad99ce3 100644 --- a/__init__.py +++ b/WikiTrans/__init__.py @@ -12,7 +12,7 @@ # 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/>. -__all__ = [ "wiki2html", "wiki2text" ] +__all__ = [ "wikimarkup", "wiki2html", "wiki2text", "wiki2texi", "wikins" ] diff --git a/wiki2html.py b/WikiTrans/wiki2html.py index 05d4642..754fa9b 100644 --- a/wiki2html.py +++ b/WikiTrans/wiki2html.py @@ -20,12 +20,14 @@ from wikins import wiki_ns_re, wiki_ns import re try: from urllib import quote as url_quote except ImportError: from urllib.parse import quote as url_quote +__all__ = [ "HtmlWikiMarkup", "HtmlWiktionaryMarkup" ] + class HtmlWikiMarkup (WikiMarkup): """ A (hopefully) general-purpose Wiki->HTML translator class. FIXME: 1. See WikiMarkup for a list 2. [[official position]]s : final 's' gets after closing </a> tag. Should be before. diff --git a/wiki2texi.py b/WikiTrans/wiki2texi.py index 6e32c56..6e32c56 100644 --- a/wiki2texi.py +++ b/WikiTrans/wiki2texi.py diff --git a/wiki2text.py b/WikiTrans/wiki2text.py index 916391e..916391e 100644 --- a/wiki2text.py +++ b/WikiTrans/wiki2text.py diff --git a/wikimarkup.py b/WikiTrans/wikimarkup.py index 2ef6be1..2ef6be1 100644 --- a/wikimarkup.py +++ b/WikiTrans/wikimarkup.py diff --git a/wikins.py b/WikiTrans/wikins.py index 4fb5315..4fb5315 100644 --- a/wikins.py +++ b/WikiTrans/wikins.py diff --git a/bin/wikitrans b/bin/wikitrans new file mode 100755 index 0000000..0cb26a4 --- /dev/null +++ b/bin/wikitrans @@ -0,0 +1,129 @@ +#!/usr/bin/python +# -*- coding: utf-8 -*- +# Copyright (C) 2008,2015 Sergey Poznyakoff +# +# This program is free software; you can redistribute it and/or modify +# 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 __future__ import print_function +import sys +from optparse import OptionParser +try: + from StringIO import StringIO +except ImportError: + from io import StringIO +from WikiTrans.wiki2html import HtmlWikiMarkup, HtmlWiktionaryMarkup +from WikiTrans.wiki2text import TextWikiMarkup, TextWiktionaryMarkup +from WikiTrans.wiki2texi import TexiWikiMarkup +from WikiTrans.wikimarkup import WikiMarkup + +class DumpWikiMarkup (WikiMarkup): + def __str__(self): + if self.tree: + s = StringIO() + self.dump(self.tree, 0, s) + return s.getvalue() + else: + return "" + +handlers = { + 'dump': { + 'default': DumpWikiMarkup + }, + 'html': { + 'default': HtmlWikiMarkup, + 'wiktionary': HtmlWiktionaryMarkup + }, + 'text': { + 'default': TextWikiMarkup, + 'wiktionary': TextWiktionaryMarkup + }, + 'texi': { + 'default': TexiWikiMarkup + } +} + +def setkw(option, opt, value, parser): + if not parser.values.kwdict: + parser.values.kwdict = {} + (kw,sep,val) = value.partition('=') + if val: + parser.values.kwdict[kw] = val + +def main(): + usage = '%prog [OPTIONS] FILE' + version = '%prog 1.0' + description = """Translates MediaWiki documents markup to various other formats. +""" + epilog = "Report bugs to: <gray+wikitrans@gnu.org.ua>" + + parser = OptionParser(usage=usage, + version=version, + description=description, + epilog=epilog) + parser.add_option('-v', '--verbose', + action="count", dest="verbose", + help="verbose operation") + parser.add_option('-I', '--input-type', + action='store', type='string', dest='itype', + default='default', + help='set input document type') + parser.add_option('-t', '--to', '--type', + action='store', type='string', dest='otype', + default='html', + help='set output document type') + parser.add_option('-l', '--lang', + action='store', type='string', dest='lang', + default='pl', + help='set input document language') + parser.add_option('-o', '--option', + action='callback', callback=setkw, + type='string', dest='kwdict', + default={}, + help='set keyword option for the parser class') + parser.add_option('-d', '--debug', + action='store', type='int', dest='debug', + default=0, + help='set debug level (0..100)') + parser.add_option('-D', '--dump', + action='store_const', const='dump', + dest='otype', + help='dump parse tree and exit; similar to --type=dump') + + (options, args) = parser.parse_args() + + if len(args) == 1: + if args[0] == '-': + options.kwdict['file'] = sys.stdin + else: + options.kwdict['filename'] = args[0] + else: + parser.error("bad number of arguments") + + options.kwdict['lang'] = options.lang # FIXME + + if options.otype in handlers: + if options.itype in handlers[options.otype]: + markup = handlers[options.otype][options.itype](**options.kwdict) + markup.debug_level = options.debug + markup.parse() + print("%s" % str(markup)) + exit(0) + else: + print("unsupported input type: %s" % options.itype) + else: + print("unsupported output type: %s" % options.otype) + exit(1) + +if __name__ == '__main__': + main() @@ -12,29 +12,32 @@ # 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 distutils.core import setup -import wikimarkup +from setuptools import setup, find_packages +from codecs import open -setup(name='wit', +setup(name='wikitrans', version='0.1', author='Sergey Poznyakoff', - author_email='gray@gnu.org.ua', - url='http://gray.gnu.org.ua/', - package_dir = {'wit': ''}, - packages=['wit'], + author_email='gray@gnu.org', + url='http://www.gnu.org.ua/projects/wit', +# package_dir = {'src': ''}, + packages = find_packages(exclude=['contrib', 'docs', 'tests*']), + scripts=['bin/wikitrans'], license='GPL License', description='Wiki markup translator.', + long_description='Translates MediaWiki documents markup to various other formats', platforms=['any'], classifiers=[ - 'Development Status :: 3 - Alpha', + 'Development Status :: 4 - Beta', 'Intended Audience :: Developers', 'License :: OSI Approved :: GNU General Public License (GPL)', 'Operating System :: OS Independent', 'Programming Language :: Python', 'Topic :: Software Development :: Libraries :: Python Modules', 'Topic :: Text Processing :: Markup' - ] + ], + keywords = 'mediawiki markup translation', ) diff --git a/testdata/boldit2.html b/testdata/boldit2.html new file mode 100644 index 0000000..cbe21ab --- /dev/null +++ b/testdata/boldit2.html @@ -0,0 +1 @@ +<p><b><i>a b</i> c d</b></p> diff --git a/wikicvt.py b/wikicvt.py deleted file mode 100755 index 41bba2f..0000000 --- a/wikicvt.py +++ /dev/null @@ -1,125 +0,0 @@ -#!/usr/bin/python -# -*- coding: utf-8 -*- -# Copyright (C) 2008,2015 Sergey Poznyakoff -# -# This program is free software; you can redistribute it and/or modify -# 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 __future__ import print_function -import sys -import getopt -try: - from StringIO import StringIO -except ImportError: - from io import StringIO -from wiki2html import * -from wiki2text import * -from wiki2texi import * - -class DumpWikiMarkup (WikiMarkup): - def __str__(self): - if self.tree: - s = StringIO() - self.dump(self.tree, 0, s) - return s.getvalue() - else: - return "" - -def usage(code=0): - print("""usage: %s [-hvt] [-I INTYPE] [-l lang] [-o kw=val] [--lang=lang] - [--option kw=val] [--input-type=INTYPE] [--type=OUTTYPE] [--help] - [--verbose] file -""" % sys.argv[0]) - sys.exit(code) - -handlers = { - 'dump': { - 'default': DumpWikiMarkup - }, - 'html': { - 'default': HtmlWikiMarkup, - 'wiktionary': HtmlWiktionaryMarkup - }, - 'text': { - 'default': TextWikiMarkup, - 'wiktionary': TextWiktionaryMarkup - }, - 'texi': { - 'default': TexiWikiMarkup - } -} - -def main(): - verbose_flag = 0 - itype = 'default' - otype = 'html' - lang = "pl" - kwdict = {} - debug = 0 - - try: - opts, args = getopt.getopt(sys.argv[1:], "Dd:I:hl:o:t:v", - ["dump", - "debug=", "help", "lang=", "option=", - "to=", "type=", "input-text", "input-type=", - "verbose" ]) - except getopt.GetoptError: - usage(1) - - for o, a in opts: - if o in ("-h", "--help"): - usage() - elif o in ("-v", "--verbose"): - verbose_flag = verbose_flag + 1 - elif o in ("-I", "--input-type"): - itype = a - elif o in ("-t", "--to", "--type"): - otype = a - elif o in ("-l", "--lang"): - lang = a - elif o in ("-o", "--option"): - (kw,sep,val) = a.partition('=') - if val != '': - kwdict[kw] = val - elif o == "--input-text": - input_text = True - elif o in ("-d", "--debug"): - debug = eval(a) - elif o in ("-D", "--dump"): - otype = 'dump' - - if len(args) == 1: - if args[0] == '-': - kwdict['file'] = sys.stdin - else: - kwdict['filename'] = args[0] - else: - usage(1) - - kwdict['lang']=lang - - if otype in handlers: - if itype in handlers[otype]: - markup = handlers[otype][itype](**kwdict) - markup.debug_level = debug - markup.parse() - print("%s" % str(markup)) - exit(0) - else: - print("unsupported input type: %s" % itype) - else: - print("unsupported output type: %s" % otype) - exit(1) - -if __name__ == '__main__': - main() |