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.
102 103 104 105 106 107 108 109 |
# File 'lib/everyday-cli-utils/option.rb', line 102 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.
100 101 102 |
# File 'lib/everyday-cli-utils/option.rb', line 100 def names @names end |
#value ⇒ Object (readonly)
Returns the value of attribute value.
100 101 102 |
# File 'lib/everyday-cli-utils/option.rb', line 100 def value @value end |
Class Method Details
.register(opts, options, type, opt_name, names, settings = {}, default_settings = {}, &block) ⇒ Object
131 132 133 134 135 136 137 138 139 140 |
# File 'lib/everyday-cli-utils/option.rb', line 131 def self.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
125 126 127 128 129 |
# File 'lib/everyday-cli-utils/option.rb', line 125 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
121 122 123 |
# File 'lib/everyday-cli-utils/option.rb', line 121 def run @block.call unless @block.nil? || !@block end |
#set(value) ⇒ Object
111 112 113 114 |
# File 'lib/everyday-cli-utils/option.rb', line 111 def set(value) @value = value @values = {} end |
#update(value, layer) ⇒ Object
116 117 118 119 |
# File 'lib/everyday-cli-utils/option.rb', line 116 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 |