Class: 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.
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
#names ⇒ Object (readonly)
Returns the value of attribute names.
134 135 136 |
# File 'lib/everyday-cli-utils/option.rb', line 134 def names @names end |
#value ⇒ Object (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, , type, opt_name, names, settings = {}, default_settings = {}, &block) settings = EverydayCliUtils::MapUtil.extend_hash(default_settings, settings) 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
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 |
#run ⇒ Object
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 |