Class: Pindo::Options::OptionValueParser
- Inherits:
-
Object
- Object
- Pindo::Options::OptionValueParser
- Defined in:
- lib/pindo/options/core/option_value_parser.rb
Overview
参数值解析器负责从 CLAide::ARGV 和环境变量中提取参数的原始值
Class Method Summary collapse
-
.extract_from_argv(argv, item) ⇒ Object?
从 argv 提取参数值.
-
.parse(argv, option_items) ⇒ Hash
解析参数值.
Class Method Details
.extract_from_argv(argv, item) ⇒ Object?
从 argv 提取参数值
43 44 45 46 47 48 49 50 51 |
# File 'lib/pindo/options/core/option_value_parser.rb', line 43 def self.extract_from_argv(argv, item) if item.boolean? # Boolean 类型:使用 flag? argv.flag?(item.key.to_s, nil) else # 其他类型:使用 option argv.option(item.key.to_s, nil) end end |
.parse(argv, option_items) ⇒ Hash
解析参数值
13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 |
# File 'lib/pindo/options/core/option_value_parser.rb', line 13 def self.parse(argv, option_items) values = {} option_items.each do |item| # 1. 从 argv 提取值(优先级最高) raw_value = extract_from_argv(argv, item) # 2. 如果 argv 没有,尝试从环境变量读取 if raw_value.nil? raw_value = item.fetch_env_value end # 3. 存储值(可能是 nil) values[item.key] = raw_value unless raw_value.nil? # 4. 处理别名(别名指向同一个值) item.aliases.each do |alias_name| values[alias_name] = raw_value unless raw_value.nil? end end values end |