Class: EverydayCliUtils::OptionDef
- Inherits:
-
Object
- Object
- EverydayCliUtils::OptionDef
- Defined in:
- lib/everyday-cli-utils/option.rb
Instance Attribute Summary collapse
-
#names ⇒ Object
readonly
Returns the value of attribute names.
-
#value ⇒ Object
readonly
Returns the value of attribute value.
Class Method Summary collapse
Instance Method Summary collapse
- #composite(*layers) ⇒ Object
-
#initialize(type, names, settings = {}, &block) ⇒ OptionDef
constructor
A new instance of OptionDef.
- #run ⇒ Object
- #set(value) ⇒ Object
- #update(value, layer) ⇒ Object
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
#names ⇒ Object (readonly)
Returns the value of attribute names.
99 100 101 |
# File 'lib/everyday-cli-utils/option.rb', line 99 def names @names end |
#value ⇒ Object (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, , 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) [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 |
#run ⇒ Object
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 |