diff options
Diffstat (limited to 'src/boost/tools/litre/tool.py')
-rw-r--r-- | src/boost/tools/litre/tool.py | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/src/boost/tools/litre/tool.py b/src/boost/tools/litre/tool.py new file mode 100644 index 00000000..1533fc33 --- /dev/null +++ b/src/boost/tools/litre/tool.py @@ -0,0 +1,67 @@ +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 + ) |