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.



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

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.



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

def names
  @names
end

#valueObject (readonly)

Returns the value of attribute value.



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

def value
  @value
end

Class Method Details

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



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

def self.register(opts, options, type, opt_name, names, settings = {}, default_settings = {}, &block)
  settings = settings.clone
  default_settings.each { |v| settings[v[0]] = v[1] unless settings.has_key?(v[0]) }
  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



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

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



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

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

#set(value) ⇒ Object



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

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

#update(value, layer) ⇒ Object



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

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