import optparse import sys from docutils.core import publish_parts from docutils.frontend import OptionParser from docutils.parsers.rst import Parser def transform(writer=None, part=None): p = optparse.OptionParser(add_help_option=False) # Collect all the command line options docutils_parser = OptionParser(components=(writer, Parser())) for group in docutils_parser.option_groups: p.add_option_group(group.title, None).add_options(group.option_list) p.add_option('--part', default=part) opts, args = p.parse_args() settings = dict({'file_insertion_enabled': False, 'raw_enabled': False}, **opts.__dict__) if len(args) == 1: try: content = open(args[0], 'r').read() except IOError: content = args[0] else: content = sys.stdin.read() parts = publish_parts(source=content, settings_overrides=settings, writer=writer) if opts.part in parts: return parts[opts.part] return ''