class EverydayCliUtils::OptionDef

Attributes

names[R]
value[R]

Public Class Methods

new(type, names, settings = {}, &block) click to toggle source
# 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
register(opts, options, type, opt_name, names, settings = {}, default_settings = {}, &block) click to toggle source
# 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

Public Instance Methods

composite(*layers) click to toggle source
# 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
run() click to toggle source
# File lib/everyday-cli-utils/option.rb, line 155
def run
  @block.call unless @block.nil? || !@block
end
set(value) click to toggle source
# File lib/everyday-cli-utils/option.rb, line 145
def set(value)
  @value  = value
  @values = {}
end
update(value, layer) click to toggle source
# 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