Commits

Can Xue committed c355c85

Options 的默认参数值现在是 argparse.SUPPRESS。get() 方法现在能转换 '-' 为 '_'。

Comments (0)

Files changed (1)

kahgean/options.py

 # -*- coding: utf-8 -*-
-# Copyright (C) 2012 Xue Can <xuecan@gmail.com>
+# Copyright (C) 2012 Xue Can <xuecan@gmail.com> and contributors.
 # Licensed under the MIT license: http://www.opensource.org/licenses/mit-license
 
-u"""配置管理
+"""配置管理
 
 这个模块为提供了一个从命令行参数和配置文件读取配置信息的统一的对象。该模块\
 使用标准库 argparse 定义配置项,并分析和处理命令行参数,如果命令行参数中指\
     main_section = 'main'
     
     def __init__(self, prog=None, description=None, epilog=None,
-                 formatter_class=HelpFormatter):
+                 argument_default=SUPPRESS, formatter_class=HelpFormatter):
         self._actions = dict()
         self._namespace = None
         self._arg_parser = ArgumentParser(prog, None, description, epilog,
+                                          argument_default=argument_default,
                                           formatter_class=formatter_class)
         self.add_option(*self.config_argument, dest=self.config_file_dest,
                           metavar='filename', type=file, default=SUPPRESS,
                           help=u'配置文件')        
 
     def add_option(self, *args, **kwargs):
-        u"""添加配置项
+        """添加配置项
         
         请参考 argparse 模块文档关于 add_argument 方法的说明以了解该方法的参数
         """
         self._actions[action.dest] = action
     
     def parse_options(self, args=None):
-        u"""从命令行和配置文件(如果在命令行中指定的话)中读取配置信息"""
+        """从命令行和配置文件(如果在命令行中指定的话)中读取配置信息"""
         namespace = self._parse_args(args)
         if hasattr(namespace, self.config_file_dest):
             ns = self._load_options(getattr(namespace, self.config_file_dest))
         self._namespace = namespace
 
     def _parse_args(self, args=None):
-        u"""从命令行参数中读取配置信息"""
+        """从命令行参数中读取配置信息"""
         namespace = self._arg_parser.parse_args(args)
         return namespace
 
         return [argument, value] if value else [argument]
 
     def _load_options(self, file):
-        u"""从指定的文件中读取配置信息"""
+        """从指定的文件中读取配置信息"""
         # 从配置文件中读取数据并生成形如 --section-option value 的序列
         # 以便后续可以使用命令行处理器分析处理
         args = list()
         return namespace
     
     def get(self, option, default=None):
-        u"""返回分析后的配置选项"""
+        """返回分析后的配置选项"""
         if not self._namespace:
             raise RuntimeError("parse_options() has not been call")
+        option = option.replace('-', '_')
         return getattr(self._namespace, option, default)
     
     def __getattr__(self, option):