summaryrefslogtreecommitdiffstats
path: root/src/boost/tools/litre/tool.py
diff options
context:
space:
mode:
Diffstat (limited to 'src/boost/tools/litre/tool.py')
-rw-r--r--src/boost/tools/litre/tool.py67
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 000000000..1533fc33d
--- /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
+ )