diff options
Diffstat (limited to 'vendor/CherryPy-3.2.0/sphinx/util/convert-trac.py')
-rw-r--r-- | vendor/CherryPy-3.2.0/sphinx/util/convert-trac.py | 117 |
1 files changed, 0 insertions, 117 deletions
diff --git a/vendor/CherryPy-3.2.0/sphinx/util/convert-trac.py b/vendor/CherryPy-3.2.0/sphinx/util/convert-trac.py deleted file mode 100644 index 5253863..0000000 --- a/vendor/CherryPy-3.2.0/sphinx/util/convert-trac.py +++ /dev/null @@ -1,117 +0,0 @@ -#!python - -""" -%prog <filename> - -A utility script for performing some commonly-encountered patterns in -Trac Wiki format into reStructuredText (rst). - -filename is the name of the text file to be saved. If -U is not used, -the file is converted in-place and filename is also the name of the -source. -""" - -from __future__ import print_function -import sys -import re -import inspect -import optparse -import shutil -import urllib2 -from StringIO import StringIO - -def get_options(): - global options - parser = optparse.OptionParser(usage=inspect.cleandoc(__doc__)) - parser.add_option('-U', '--url', help="Trac URL from which to retrieve source") - options, args = parser.parse_args() - try: - options.filename = args.pop() - except IndexError: - parser.error("Filename required") - -# each of the replacement functions should have a docstring -# which is a regular expression to be matched. - -def replace_external_link(matcher): - r"\[(?P<href>(?P<scheme>\w+)\://.+?) (?P<name>.+?)\]" - return '`{name} <{href}>`_'.format(**matcher.groupdict()) - -def replace_wiki_link(matcher): - r"\[wiki\:(?P<ref>.+?) (?P<name>.+?)\]" - return '`{name} <TODO-fix wiki target {ref}>`_'.format(**matcher.groupdict()) - -# character array indexed by level for characters -heading_characters = [None, '*', '=', '-', '^'] - -def replace_headings(matcher): - r"^(?P<level>=+) (?P<name>.*) (?P=level)$" - level = len(matcher.groupdict()['level']) - char = heading_characters[level] - name = matcher.groupdict()['name'] - lines = [name, char*len(name)] - if level == 1: - lines.insert(0, char*len(name)) - return '\n'.join(lines) - -def indent(block): - add_indent = lambda s: ' ' + s - lines = StringIO(block) - i_lines = map(add_indent, lines) - return ''.join(i_lines) - -def replace_inline_code(matcher): - r"\{\{\{(?P<code>[^\n]*?)\}\}\}" - return '``{code}``'.format(**matcher.groupdict()) - -def replace_code_block(matcher): - r"\{\{\{\n(?P<code>(.|\n)*?)^\}\}\}" - return '::\n\n' + indent(matcher.groupdict()['code']) - -def replace_page_outline(matcher): - r"\[\[PageOutline\]\]\n" - return '' - -def replace_bang_symbols(matcher): - r"!(?P<symbol>\w+)" - return matcher.groupdict()['symbol'] - -# a number of the files end in -"""{{{ -#!html -<h2 class='compatibility'>Older versions</h2> -}}}""" # and everything after is garbage, so just remove it. -def remove_2x_compat_notes(matcher): - r"\{\{\{\n#!html\n<h2(.|\n)*" - return '' - -replacements = [remove_2x_compat_notes] + \ - [func for name, func in globals().items() if name.startswith('replace_')] - -def normalize_linebreaks(text): - return text.replace('\r\n', '\n') - -def convert_file(): - filename = options.filename - if options.url: - text = urllib2.urlopen(options.url).read() - text = normalize_linebreaks(text) - else: - shutil.copy(filename, filename+'.bak') - text = open(filename).read() - # iterate over each of the replacements and execute it - new_text = text - for repl in replacements: - pattern = re.compile(inspect.getdoc(repl), re.MULTILINE) - new_text = pattern.sub(repl, new_text) - - open(filename, 'w').write(new_text) - print("done") - - -def handle_command_line(): - get_options() - convert_file() - -if __name__ == '__main__': - handle_command_line() |