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.



136
137
138
139
140
141
142
143
# File 'lib/everyday-cli-utils/option.rb', line 136

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.



134
135
136
# File 'lib/everyday-cli-utils/option.rb', line 134

def names
  @names
end

#valueObject (readonly)

Returns the value of attribute value.



134
135
136
# File 'lib/everyday-cli-utils/option.rb', line 134

def value
  @value
end

Class Method Details

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



166
167
168
169
170
171
172
173
174
175
# File 'lib/everyday-cli-utils/option.rb', line 166

def 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



159
160
161
162
163
# File 'lib/everyday-cli-utils/option.rb', line 159

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



155
156
157
# File 'lib/everyday-cli-utils/option.rb', line 155

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

#set(value) ⇒ Object



145
146
147
148
# File 'lib/everyday-cli-utils/option.rb', line 145

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

#update(value, layer) ⇒ Object



150
151
152
153
# File 'lib/everyday-cli-utils/option.rb', line 150

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