coding standards et all
This commit is contained in:
parent
817a8f6849
commit
9c13aae8ba
|
@ -1,14 +1,30 @@
|
||||||
|
## rst_xhtml_generator.py
|
||||||
|
##
|
||||||
|
## Copyright (C) 2006 Yann Le Boulanger <asterix@lagaule.org>
|
||||||
|
## Copyright (C) 2006 Nikos Kouremenos <kourem@gmail.com>
|
||||||
|
## Copyright (C) 2006 Santiago Gala
|
||||||
|
##
|
||||||
|
## 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; version 2 only.
|
||||||
|
##
|
||||||
|
## 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.
|
||||||
|
##
|
||||||
|
|
||||||
from docutils import io
|
from docutils import io
|
||||||
from docutils.core import Publisher
|
from docutils.core import Publisher
|
||||||
from docutils.parsers.rst import roles
|
from docutils.parsers.rst import roles
|
||||||
|
|
||||||
def jep_reference_role(role, rawtext, text, lineno, inliner,
|
def jep_reference_role(role, rawtext, text, lineno, inliner,
|
||||||
options={}, content=[]):
|
options={}, content=[]):
|
||||||
"""Role to make handy references to Jabber Enhancement Proposals (JEP).
|
'''Role to make handy references to Jabber Enhancement Proposals (JEP).
|
||||||
|
|
||||||
Use as :JEP:`71` (or jep, or jep-reference).
|
Use as :JEP:`71` (or jep, or jep-reference).
|
||||||
Modeled after the sample in docutils documentation.
|
Modeled after the sample in docutils documentation.
|
||||||
"""
|
'''
|
||||||
from docutils import nodes,utils
|
from docutils import nodes,utils
|
||||||
from docutils.parsers.rst.roles import set_classes
|
from docutils.parsers.rst.roles import set_classes
|
||||||
|
|
||||||
|
@ -27,7 +43,7 @@ def jep_reference_role(role, rawtext, text, lineno, inliner,
|
||||||
ref = jep_base_url + jep_url % jepnum
|
ref = jep_base_url + jep_url % jepnum
|
||||||
set_classes(options)
|
set_classes(options)
|
||||||
node = nodes.reference(rawtext, 'JEP ' + utils.unescape(text), refuri=ref,
|
node = nodes.reference(rawtext, 'JEP ' + utils.unescape(text), refuri=ref,
|
||||||
**options)
|
**options)
|
||||||
return [node], []
|
return [node], []
|
||||||
|
|
||||||
roles.register_canonical_role('jep-reference', jep_reference_role)
|
roles.register_canonical_role('jep-reference', jep_reference_role)
|
||||||
|
@ -36,40 +52,40 @@ roles['jep-reference'] = 'jep-reference'
|
||||||
roles['jep'] = 'jep-reference'
|
roles['jep'] = 'jep-reference'
|
||||||
|
|
||||||
class HTMLGenerator:
|
class HTMLGenerator:
|
||||||
"""Really simple HTMLGenerator starting from publish_parts.
|
'''Really simple HTMLGenerator starting from publish_parts.
|
||||||
|
|
||||||
It reuses the docutils.core.Publisher class, which means it is *not*
|
It reuses the docutils.core.Publisher class, which means it is *not*
|
||||||
threadsafe.
|
threadsafe.
|
||||||
"""
|
'''
|
||||||
def __init__(self,
|
def __init__(self,
|
||||||
settings_spec=None,
|
settings_spec=None,
|
||||||
settings_overrides=dict(report_level=5, halt_level=5),
|
settings_overrides=dict(report_level=5, halt_level=5),
|
||||||
config_section='general'):
|
config_section='general'):
|
||||||
self.pub = Publisher(reader=None, parser=None, writer=None,
|
self.pub = Publisher(reader=None, parser=None, writer=None,
|
||||||
settings=None,
|
settings=None,
|
||||||
source_class=io.StringInput,
|
source_class=io.StringInput,
|
||||||
destination_class=io.StringOutput)
|
destination_class=io.StringOutput)
|
||||||
self.pub.set_components(reader_name='standalone',
|
self.pub.set_components(reader_name='standalone',
|
||||||
parser_name='restructuredtext',
|
parser_name='restructuredtext',
|
||||||
writer_name='html')
|
writer_name='html')
|
||||||
#hack: JEP-0071 does not allow HTML char entities, so we hack our way out of it.
|
#hack: JEP-0071 does not allow HTML char entities, so we hack our way out of it.
|
||||||
# — == u"\u2014"
|
# — == u"\u2014"
|
||||||
# a setting to only emit charater entities in the writer would be nice
|
# a setting to only emit charater entities in the writer would be nice
|
||||||
# TODO: several are emitted, and they are explicitly forbidden in the JEP
|
# FIXME: several are emitted, and they are explicitly forbidden in the JEP
|
||||||
# == u"\u00a0"
|
# == u"\u00a0"
|
||||||
self.pub.writer.translator_class.attribution_formats["dash"] = (u"\u2014", "")
|
self.pub.writer.translator_class.attribution_formats['dash'] = (u'\u2014', '')
|
||||||
self.pub.process_programmatic_settings(settings_spec,
|
self.pub.process_programmatic_settings(settings_spec,
|
||||||
settings_overrides,
|
settings_overrides,
|
||||||
config_section)
|
config_section)
|
||||||
|
|
||||||
|
|
||||||
def create_xhtml(self, text,
|
def create_xhtml(self, text,
|
||||||
destination=None,
|
destination=None,
|
||||||
destination_path=None,
|
destination_path=None,
|
||||||
enable_exit_status=None):
|
enable_exit_status=None):
|
||||||
""" Create xhtml for a fragment of IM dialog.
|
''' Create xhtml for a fragment of IM dialog.
|
||||||
We can use the source_name to store info about
|
We can use the source_name to store info about
|
||||||
the message."""
|
the message.'''
|
||||||
self.pub.set_source(text, None)
|
self.pub.set_source(text, None)
|
||||||
self.pub.set_destination(destination, destination_path)
|
self.pub.set_destination(destination, destination_path)
|
||||||
output = self.pub.publish(enable_exit_status=enable_exit_status)
|
output = self.pub.publish(enable_exit_status=enable_exit_status)
|
||||||
|
@ -82,7 +98,7 @@ def create_xhtml(text):
|
||||||
return Generator.create_xhtml(text)
|
return Generator.create_xhtml(text)
|
||||||
|
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
print Generator.create_xhtml("""
|
print Generator.create_xhtml('''
|
||||||
test::
|
test::
|
||||||
|
|
||||||
>>> print 1
|
>>> print 1
|
||||||
|
@ -92,9 +108,9 @@ test::
|
||||||
|
|
||||||
this `` should trigger`` should trigger the problem.
|
this `` should trigger`` should trigger the problem.
|
||||||
|
|
||||||
""")
|
''')
|
||||||
print Generator.create_xhtml("""
|
print Generator.create_xhtml('''
|
||||||
*test1
|
*test1
|
||||||
|
|
||||||
test2_
|
test2_
|
||||||
""")
|
''')
|
||||||
|
|
Loading…
Reference in New Issue