From: David G. <go...@us...> - 2002-08-24 01:20:35
|
Update of /cvsroot/docutils/docutils/docutils In directory usw-pr-cvs1:/tmp/cvs-serv10108/docutils/docutils Modified Files: frontend.py Log Message: - Set non-command-line defaults in ``OptionParser.__init__()``: ``_source`` & ``_destination``. - Distributed ``relative_path_options`` to components; updated ``OptionParser.populate_from_components()`` to combine it all. - Require list of keys in ``make_paths_absolute`` (was implicit in global ``relative_path_options``). Index: frontend.py =================================================================== RCS file: /cvsroot/docutils/docutils/docutils/frontend.py,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** frontend.py 8 Aug 2002 00:24:11 -0000 1.19 --- frontend.py 24 Aug 2002 01:20:30 -0000 1.20 *************** *** 46,68 **** config_parser.read(value) settings = config_parser.get_section('options') ! make_paths_absolute(settings, os.path.dirname(value)) parser.values.__dict__.update(settings) ! relative_path_options = ('warning_stream', 'stylesheet', 'pep_stylesheet', ! 'pep_template') ! ! def make_paths_absolute(dictionary, base_path=None): """ Interpret filesystem path settings relative to the `base_path` given. """ if base_path is None: base_path = os.getcwd() ! for option in relative_path_options: ! if dictionary.has_key(option) and dictionary[option]: ! dictionary[option] = os.path.normpath( ! os.path.abspath(os.path.join(base_path, dictionary[option]))) ! class OptionParser(optik.OptionParser): """ --- 46,69 ---- config_parser.read(value) settings = config_parser.get_section('options') ! make_paths_absolute(settings, parser.relative_path_options, ! os.path.dirname(value)) parser.values.__dict__.update(settings) ! def make_paths_absolute(pathdict, keys, base_path=None): """ Interpret filesystem path settings relative to the `base_path` given. + + Paths are values in `pathdict` whose keys are in `keys`. Get `keys` from + `OptionParser.relative_path_options`. """ if base_path is None: base_path = os.getcwd() ! for key in keys: ! if pathdict.has_key(key) and pathdict[key]: ! pathdict[key] = os.path.normpath( ! os.path.abspath(os.path.join(base_path, pathdict[key]))) ! class OptionParser(optik.OptionParser, docutils.OptionSpec): """ *************** *** 102,108 **** ('Include a "View document source" link (relative to destination).', ['--source-link', '-s'], {'action': 'store_true'}), ! ('Use the supplied <url> for a "View document source" link; ' ! 'implies --source-link.', ! ['--source-url'], {'metavar': '<url>'}), ('Do not include a "View document source" link.', ['--no-source-link'], --- 103,109 ---- ('Include a "View document source" link (relative to destination).', ['--source-link', '-s'], {'action': 'store_true'}), ! ('Use the supplied <URL> verbatim for a "View document source" ' ! 'link; implies --source-link.', ! ['--source-url'], {'metavar': '<URL>'}), ('Do not include a "View document source" link.', ['--no-source-link'], *************** *** 174,185 **** ['--dump-internals'], {'action': 'store_true'}),)) ! """Command-line option specifications, common to all Docutils front ends. ! One or more sets of option group title, description, and a list/tuple of ! tuples: ``('help text', [list of option strings], {keyword arguments})``. ! Group title and/or description may be `None`; no group title implies no ! group, just a list of single options. Option specs from Docutils ! components are also used (see `populate_from_components()`).""" version_template = '%%prog (Docutils %s)' % docutils.__version__ def __init__(self, components=(), *args, **kwargs): --- 175,186 ---- ['--dump-internals'], {'action': 'store_true'}),)) ! """Command-line options common to all Docutils front ends. Option specs ! specific to individual Docutils components are also used (see ! `populate_from_components()`).""" ! ! relative_path_options = ('warning_stream',) version_template = '%%prog (Docutils %s)' % docutils.__version__ + """Default version message.""" def __init__(self, components=(), *args, **kwargs): *************** *** 189,214 **** default overrides. """ ! optik.OptionParser.__init__(self, help=None, format=optik.Titled(), ! *args, **kwargs) if not self.version: self.version = self.version_template self.populate_from_components(tuple(components) + (self,)) def populate_from_components(self, components): for component in components: ! if component is not None: ! i = 0 ! cmdline_options = component.cmdline_options ! while i < len(cmdline_options): ! title, description, option_spec = cmdline_options[i:i+3] ! if title: ! group = optik.OptionGroup(self, title, description) ! self.add_option_group(group) ! else: ! group = self # single options ! for (help_text, option_strings, kwargs) in option_spec: ! group.add_option(help=help_text, *option_strings, ! **kwargs) ! i += 3 def check_values(self, values, args): --- 190,227 ---- default overrides. """ ! optik.OptionParser.__init__( ! self, help=None, ! format=optik.Titled(), ! # Needed when Optik is updated (replaces above 2 lines): ! #self, add_help=None, ! #formatter=optik.TitledHelpFormatter(width=78), ! *args, **kwargs) if not self.version: self.version = self.version_template + # Internal settings with no defaults from option specifications; + # initialize manually: + self.set_defaults(_source=None, _destination=None) + # Make an instance copy (it will be modified): + self.relative_path_options = list(self.relative_path_options) self.populate_from_components(tuple(components) + (self,)) def populate_from_components(self, components): for component in components: ! if component is None: ! continue ! i = 0 ! cmdline_options = component.cmdline_options ! self.relative_path_options.extend(component.relative_path_options) ! while i < len(cmdline_options): ! title, description, option_spec = cmdline_options[i:i+3] ! if title: ! group = optik.OptionGroup(self, title, description) ! self.add_option_group(group) ! else: ! group = self # single options ! for (help_text, option_strings, kwargs) in option_spec: ! group.add_option(help=help_text, *option_strings, ! **kwargs) ! i += 3 def check_values(self, values, args): *************** *** 218,222 **** values.halt_level = self.check_threshold(values.halt_level) values._source, values._destination = self.check_args(args) ! make_paths_absolute(values.__dict__, os.getcwd()) return values --- 231,236 ---- values.halt_level = self.check_threshold(values.halt_level) values._source, values._destination = self.check_args(args) ! make_paths_absolute(values.__dict__, self.relative_path_options, ! os.getcwd()) return values |