| 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 |
| ) |