Class: Pindo::Options::OptionConfiguration

Inherits:
Object
  • Object
show all
Defined in:
lib/pindo/options/core/option_configuration.rb

Overview

参数配置管理器(简化版)负责管理参数值的生命周期:默认值、类型转换、验证

Instance Method Summary collapse

Constructor Details

#initialize(available_options, raw_values = {}, command_instance: nil) ⇒ OptionConfiguration

初始化

Parameters:

  • available_options (Array<OptionItem>)

    可用参数列表

  • raw_values (Hash) (defaults to: {})

    原始参数值

  • command_instance (Object, nil) (defaults to: nil)

    命令实例(用于 value_block)



13
14
15
16
17
18
19
20
21
22
# File 'lib/pindo/options/core/option_configuration.rb', line 13

def initialize(available_options, raw_values = {}, command_instance: nil)
  @available_options = available_options
  @raw_values = raw_values
  @command_instance = command_instance
  @values = {}
  @options_map = build_options_map

  # 执行参数处理流程
  process_all_options
end

Instance Method Details

#[](key) ⇒ Object

获取参数值(支持符号和字符串)

Parameters:

  • key (Symbol, String)

    参数键名

Returns:

  • (Object)

    参数值



27
28
29
30
# File 'lib/pindo/options/core/option_configuration.rb', line 27

def [](key)
  key = normalize_key(key)
  @values[key]
end

#[]=(key, value) ⇒ Object

设置参数值

Parameters:

  • key (Symbol, String)

    参数键名

  • value (Object)

    参数值



35
36
37
38
39
40
41
42
43
44
45
# File 'lib/pindo/options/core/option_configuration.rb', line 35

def []=(key, value)
  key = normalize_key(key)
  option_item = @options_map[key]

  if option_item
    @values[key] = option_item.auto_convert_value(value)
    option_item.valid?(@values[key])
  else
    @values[key] = value
  end
end

#each {|key, value| ... } ⇒ Object

遍历所有参数

Yields:

  • (key, value)

    参数键值对



68
69
70
# File 'lib/pindo/options/core/option_configuration.rb', line 68

def each(&block)
  @values.each(&block)
end

#key?(key) ⇒ Boolean

检查参数是否存在

Parameters:

  • key (Symbol, String)

    参数键名

Returns:

  • (Boolean)


56
57
58
# File 'lib/pindo/options/core/option_configuration.rb', line 56

def key?(key)
  @values.key?(normalize_key(key))
end

#keysArray<Symbol>

获取所有参数键

Returns:

  • (Array<Symbol>)


62
63
64
# File 'lib/pindo/options/core/option_configuration.rb', line 62

def keys
  @values.keys
end

#to_hashHash

获取所有参数值

Returns:

  • (Hash)

    所有参数值



49
50
51
# File 'lib/pindo/options/core/option_configuration.rb', line 49

def to_hash
  @values.dup
end