Class: EverydayCliUtils::OptionDef

Inherits:
Object
  • Object
show all
Defined in:
lib/everyday-cli-utils/option.rb

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(type, names, settings = {}, &block) ⇒ OptionDef

Returns a new instance of OptionDef.



102
103
104
105
106
107
108
109
# File 'lib/everyday-cli-utils/option.rb', line 102

def initialize(type, names, settings = {}, &block)
  @type     = type
  @names    = names
  @settings = settings
  @block    = block
  @value    = OptionTypes.default_value(type, settings)
  @values   = {}
end

Instance Attribute Details

#namesObject (readonly)

Returns the value of attribute names.



100
101
102
# File 'lib/everyday-cli-utils/option.rb', line 100

def names
  @names
end

#valueObject (readonly)

Returns the value of attribute value.



100
101
102
# File 'lib/everyday-cli-utils/option.rb', line 100

def value
  @value
end

Class Method Details

.register(opts, options, type, opt_name, names, settings = {}, default_settings = {}, &block) ⇒ Object



131
132
133
134
135
136
137
138
139
140
# File 'lib/everyday-cli-utils/option.rb', line 131

def self.register(opts, options, type, opt_name, names, settings = {}, default_settings = {}, &block)
  settings          = EverydayCliUtils::MapUtil.extend_hash(default_settings, settings)
  opt               = OptionDef.new(type, names.clone, settings, &block)
  options[opt_name] = opt
  names             = OptionTypes.mod_names(type, names, settings)
  opts.on(*names) { |*args|
    opt.update(args, :arg)
    opt.run
  }
end

Instance Method Details

#composite(*layers) ⇒ Object



125
126
127
128
129
# File 'lib/everyday-cli-utils/option.rb', line 125

def composite(*layers)
  value = @value
  layers.each { |layer| value = OptionTypes.updated_value(@type, value, @values[layer], @settings) if @values.has_key?(layer) }
  value
end

#runObject



121
122
123
# File 'lib/everyday-cli-utils/option.rb', line 121

def run
  @block.call unless @block.nil? || !@block
end

#set(value) ⇒ Object



111
112
113
114
# File 'lib/everyday-cli-utils/option.rb', line 111

def set(value)
  @value  = value
  @values = {}
end

#update(value, layer) ⇒ Object



116
117
118
119
# File 'lib/everyday-cli-utils/option.rb', line 116

def update(value, layer)
  @values[layer] = OptionTypes.default_value(@type, @settings) unless @values.has_key?(layer)
  @values[layer] = OptionTypes.updated_value(@type, @values[layer], value, @settings)
end