litre/tool.py
Dave Abrahams ea2e50b67d cplusplus.py, tool.py: bring back litre_config.py file.
cplusplus.py: unicode unhandled example dump workaround
index.rst: first example checked in


[SVN r34891]
2006-08-15 20:37:51 +00:00

68 lines
1.7 KiB
Python

try:
import locale
locale.setlocale(locale.LC_ALL, '')
except:
pass
# try to import a litre_config.py file.
try:
import litre_config as config
except:
class config: pass
import sys
try: # if the user has set up docutils_root in his config, add it to the PYTHONPATH.
sys.path += ['%s/docutils' % config.docutils_root
, '%s/docutils/extras' % config.docutils_root]
except: pass
import docutils.writers
import cplusplus
import os
from docutils.core import publish_cmdline, default_description
description = ('Literate programming from ReStructuredText '
'sources. ' + default_description)
def _pop_option(prefix):
found = None
for opt in sys.argv:
if opt.startswith(prefix):
sys.argv = [ x for x in sys.argv if x != opt ]
found = opt
if prefix.endswith('='):
found = opt[len(prefix):]
return found
dump_dir = _pop_option('--dump_dir=')
max_output_lines = _pop_option('--max_output_lines=')
if dump_dir:
cplusplus.Writer.translator = cplusplus.DumpTranslator
if _pop_option('--workaround'):
cplusplus.Writer.translator = cplusplus.WorkaroundTranslator
config.includes.insert(0, os.path.join(os.path.split(dump_dir)[0], 'patches'))
config.dump_dir = os.path.abspath(dump_dir)
if _pop_option('--cleanup_source'):
config.line_hash = None
if not os.path.exists(config.dump_dir):
os.makedirs(config.dump_dir)
if max_output_lines:
config.max_output_lines = int(max_output_lines)
config.bjam_options = _pop_option('--bjam=')
config.includes = []
publish_cmdline(
writer=cplusplus.Writer(config),
description=description
)