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
99 100 101 |
# File 'lib/aruba/basic_configuration.rb', line 99 def initialize initialize_configuration end |
Class Method Details
.known_options ⇒ Object
14 15 16 |
# File 'lib/aruba/basic_configuration.rb', line 14 def @known_options ||= {} 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 76 |
# File 'lib/aruba/basic_configuration.rb', line 60 def option_accessor(name, opts = {}) contract = opts[:contract] default = opts[:default] fail ArgumentError, 'Either use block or default value' if block_given? && default # fail ArgumentError, 'Either use block or default value' if !block_given? && default.nil? && default.to_s.empty? fail 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] fail ArgumentError, 'Either use block or default value' if block_given? && default fail 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
196 197 198 |
# File 'lib/aruba/basic_configuration.rb', line 196 def ==(other) .values.map(&:value) == other..values.map(&:value) end |
#after(name, context = proc {}, *args) { ... } ⇒ Object
Define or run after-hook
162 163 164 165 166 167 168 169 170 171 172 |
# File 'lib/aruba/basic_configuration.rb', line 162 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
182 183 184 185 186 |
# File 'lib/aruba/basic_configuration.rb', line 182 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
137 138 139 140 141 142 143 144 145 146 147 |
# File 'lib/aruba/basic_configuration.rb', line 137 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
175 176 177 178 179 |
# File 'lib/aruba/basic_configuration.rb', line 175 def before?(name) name = format('%s_%s', 'before_', name.to_s).to_sym @hooks.exist? name end |
#configure {|Configuration| ... } ⇒ Object
106 107 108 |
# File 'lib/aruba/basic_configuration.rb', line 106 def configure yield self if block_given? end |
#make_copy ⇒ Object
Make deep dup copy of configuration
116 117 118 119 120 121 122 |
# File 'lib/aruba/basic_configuration.rb', line 116 def make_copy obj = dup obj. = Marshal.load(Marshal.dump()) obj.hooks = @hooks obj end |
#option?(name) ⇒ Boolean
Check if
192 193 194 |
# File 'lib/aruba/basic_configuration.rb', line 192 def option?(name) .any? { |_, v| v.name == name.to_sym } end |
#reset ⇒ Object
Reset configuration
111 112 113 |
# File 'lib/aruba/basic_configuration.rb', line 111 def reset initialize_configuration end |
#set_if_option(name, *args) ⇒ Object
Set if name is option
201 202 203 |
# File 'lib/aruba/basic_configuration.rb', line 201 def set_if_option(name, *args) public_send("#{name}=".to_sym, *args) if option? name end |