Class: Aruba::BasicConfiguration
- Inherits:
-
Object
- Object
- Aruba::BasicConfiguration
- Includes:
- Contracts
- Defined in:
- lib/aruba/basic_configuration.rb,
lib/aruba/basic_configuration/option.rb
Overview
Basic Configuration
Direct Known Subclasses
Defined Under Namespace
Classes: Option
Class Method Summary collapse
- .known_options ⇒ Object
-
.option_accessor(name, opts = {}) ⇒ Object
Define an option reader and writer.
-
.option_reader(name, opts = {}) ⇒ Object
Define an option reader.
Instance Method Summary collapse
- #==(other) ⇒ Object
-
#after(name, context = proc {}, *args) { ... } ⇒ Object
Define or run after-hook.
-
#after?(name) ⇒ Boolean
Check if after-hook
is defined. -
#before(name, context = proc {}, *args) { ... } ⇒ Object
Define or run before-hook.
-
#before?(name) ⇒ Boolean
Check if before-hook
is defined. - #configure {|Configuration| ... } ⇒ Object
-
#initialize ⇒ BasicConfiguration
constructor
Create configuration.
-
#make_copy ⇒ Object
Make deep dup copy of configuration.
-
#option?(name) ⇒ Boolean
Check if
is option. -
#reset ⇒ Object
Reset configuration.
-
#set_if_option(name, *args) ⇒ Object
Set if name is option.
Constructor Details
#initialize ⇒ BasicConfiguration
Create configuration
98 99 100 |
# File 'lib/aruba/basic_configuration.rb', line 98 def initialize initialize_configuration end |
Class Method Details
.known_options ⇒ Object
14 15 16 |
# File 'lib/aruba/basic_configuration.rb', line 14 def ||= {} end |
.option_accessor(name, opts = {}) ⇒ Object
Define an option reader and writer
60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
# File 'lib/aruba/basic_configuration.rb', line 60 def option_accessor(name, opts = {}) contract = opts[:contract] default = opts[:default] raise ArgumentError, 'Either use block or default value' if block_given? && default raise ArgumentError, 'contract-options is required' if contract.nil? # Add writer add_option(name, block_given? ? yield(InConfigWrapper.new()) : default) Contract contract define_method("#{name}=") { |v| find_option(name).value = v } # Add reader option_reader name, contract: { None => contract.values.first } end |
.option_reader(name, opts = {}) ⇒ Object
Define an option reader
31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/aruba/basic_configuration.rb', line 31 def option_reader(name, opts = {}) contract = opts[:contract] default = opts[:default] raise ArgumentError, 'Either use block or default value' if block_given? && default raise ArgumentError, 'contract-options is required' if contract.nil? Contract contract add_option(name, block_given? ? yield(InConfigWrapper.new()) : default) define_method(name) { find_option(name).value } self end |
Instance Method Details
#==(other) ⇒ Object
195 196 197 |
# File 'lib/aruba/basic_configuration.rb', line 195 def ==(other) .values.map(&:value) == other..values.map(&:value) end |
#after(name, context = proc {}, *args) { ... } ⇒ Object
Define or run after-hook
161 162 163 164 165 166 167 168 169 170 171 |
# File 'lib/aruba/basic_configuration.rb', line 161 def after(name, context = proc {}, *args, &block) name = format('%s_%s', 'after_', name.to_s).to_sym if block_given? @hooks.append(name, block) self else @hooks.execute(name, context, *args) end end |
#after?(name) ⇒ Boolean
Check if after-hook
181 182 183 184 185 |
# File 'lib/aruba/basic_configuration.rb', line 181 def after?(name) name = format('%s_%s', 'after_', name.to_s).to_sym @hooks.exist? name end |
#before(name, context = proc {}, *args) { ... } ⇒ Object
Define or run before-hook
136 137 138 139 140 141 142 143 144 145 146 |
# File 'lib/aruba/basic_configuration.rb', line 136 def before(name, context = proc {}, *args, &block) name = format('%s_%s', 'before_', name.to_s).to_sym if block_given? @hooks.append(name, block) self else @hooks.execute(name, context, *args) end end |
#before?(name) ⇒ Boolean
Check if before-hook
174 175 176 177 178 |
# File 'lib/aruba/basic_configuration.rb', line 174 def before?(name) name = format('%s_%s', 'before_', name.to_s).to_sym @hooks.exist? name end |
#configure {|Configuration| ... } ⇒ Object
105 106 107 |
# File 'lib/aruba/basic_configuration.rb', line 105 def configure yield self if block_given? end |
#make_copy ⇒ Object
Make deep dup copy of configuration
115 116 117 118 119 120 121 |
# File 'lib/aruba/basic_configuration.rb', line 115 def make_copy obj = dup obj. = Marshal.load(Marshal.dump()) obj.hooks = @hooks obj end |
#option?(name) ⇒ Boolean
Check if
191 192 193 |
# File 'lib/aruba/basic_configuration.rb', line 191 def option?(name) .any? { |_, v| v.name == name.to_sym } end |
#reset ⇒ Object
Reset configuration
110 111 112 |
# File 'lib/aruba/basic_configuration.rb', line 110 def reset initialize_configuration end |
#set_if_option(name, *args) ⇒ Object
Set if name is option
200 201 202 |
# File 'lib/aruba/basic_configuration.rb', line 200 def set_if_option(name, *args) public_send("#{name}=".to_sym, *args) if option? name end |