Class: EverydayCliUtils::OptionDef
- Inherits:
-
Object
- Object
- EverydayCliUtils::OptionDef
- Defined in:
- lib/everyday-cli-utils/option.rb
Instance Attribute Summary collapse
-
#value ⇒ Object
readonly
Returns the value of attribute value.
Class Method Summary collapse
Instance Method Summary collapse
- #composite(*layers) ⇒ Object
-
#initialize(type, settings = {}, &block) ⇒ OptionDef
constructor
A new instance of OptionDef.
- #run ⇒ Object
- #set(value) ⇒ Object
- #update(value, layer) ⇒ Object
Constructor Details
#initialize(type, settings = {}, &block) ⇒ OptionDef
Returns a new instance of OptionDef.
101 102 103 104 105 106 107 |
# File 'lib/everyday-cli-utils/option.rb', line 101 def initialize(type, settings = {}, &block) @type = type @settings = settings @block = block @value = OptionTypes.default_value(type, settings) @values = {} end |
Instance Attribute Details
#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
129 130 131 132 133 134 135 136 137 138 139 |
# File 'lib/everyday-cli-utils/option.rb', line 129 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, 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
123 124 125 126 127 |
# File 'lib/everyday-cli-utils/option.rb', line 123 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
119 120 121 |
# File 'lib/everyday-cli-utils/option.rb', line 119 def run @block.call unless @block.nil? || !@block end |
#set(value) ⇒ Object
109 110 111 112 |
# File 'lib/everyday-cli-utils/option.rb', line 109 def set(value) @value = value @values = {} end |
#update(value, layer) ⇒ Object
114 115 116 117 |
# File 'lib/everyday-cli-utils/option.rb', line 114 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 |