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 = {}) ⇒ OptionConfiguration

初始化

Parameters:

  • available_options (Array<OptionItem>)

    可用参数列表

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

    原始参数值



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

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

  # 执行参数处理流程
  process_all_options
end

Instance Method Details

#[](key) ⇒ Object

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

Parameters:

  • key (Symbol, String)

    参数键名

Returns:

  • (Object)

    参数值



25
26
27
28
# File 'lib/pindo/options/core/option_configuration.rb', line 25

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

#[]=(key, value) ⇒ Object

设置参数值

Parameters:

  • key (Symbol, String)

    参数键名

  • value (Object)

    参数值



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

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)

    参数键值对



66
67
68
# File 'lib/pindo/options/core/option_configuration.rb', line 66

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

#key?(key) ⇒ Boolean

检查参数是否存在

Parameters:

  • key (Symbol, String)

    参数键名

Returns:

  • (Boolean)


54
55
56
# File 'lib/pindo/options/core/option_configuration.rb', line 54

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

#keysArray<Symbol>

获取所有参数键

Returns:

  • (Array<Symbol>)


60
61
62
# File 'lib/pindo/options/core/option_configuration.rb', line 60

def keys
  @values.keys
end

#to_hashHash

获取所有参数值

Returns:

  • (Hash)

    所有参数值



47
48
49
# File 'lib/pindo/options/core/option_configuration.rb', line 47

def to_hash
  @values.dup
end