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, type:, default: nil) ⇒ Object
Define an option reader and writer.
-
.option_reader(name, type:, default: nil) ⇒ Object
Define an option reader.
Instance Method Summary collapse
- #==(other) ⇒ Object
-
#after(name) { ... } ⇒ Object
Define after-hook.
-
#before(name) { ... } ⇒ Object
Define before-hook.
- #configure {|Configuration| ... } ⇒ Object
-
#initialize ⇒ BasicConfiguration
constructor
Create configuration.
-
#make_copy ⇒ Object
Make deep dup copy of configuration.
-
#option?(name) ⇒ Boolean
Check if <name> is option.
-
#reset ⇒ Object
Reset configuration.
-
#run_after_hook(name, context, *args) ⇒ Object
Run after-hook.
-
#run_before_hook(name, context, *args) ⇒ Object
Run before-hook.
-
#set_if_option(name, *args) ⇒ Object
Set if name is option.
Constructor Details
#initialize ⇒ BasicConfiguration
Create configuration
80 81 82 |
# File 'lib/aruba/basic_configuration.rb', line 80 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, type:, default: nil) ⇒ Object
Define an option reader and writer
48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/aruba/basic_configuration.rb', line 48 def option_accessor(name, type:, default: nil) raise ArgumentError, "Either use block or default value" if block_given? && default # Add writer add_option(name, block_given? ? yield(InConfigWrapper.new()) : default) Contract type => type define_method("#{name}=") { |v| find_option(name).value = v } # Add reader option_reader name, type: type end |
.option_reader(name, type:, default: nil) ⇒ Object
Define an option reader
28 29 30 31 32 33 34 35 |
# File 'lib/aruba/basic_configuration.rb', line 28 def option_reader(name, type:, default: nil) raise ArgumentError, "Either use block or default value" if block_given? && default add_option(name, block_given? ? yield(InConfigWrapper.new()) : default) Contract None => type define_method(name) { find_option(name).value } end |
Instance Method Details
#==(other) ⇒ Object
177 178 179 |
# File 'lib/aruba/basic_configuration.rb', line 177 def ==(other) .values.map(&:value) == other..values.map(&:value) end |
#after(name) { ... } ⇒ Object
Define after-hook
144 145 146 147 148 149 150 151 |
# File 'lib/aruba/basic_configuration.rb', line 144 def after(name, &block) name = format("%s_%s", "after_", name.to_s).to_sym raise ArgumentError, "A block is required" unless block @hooks.append(name, block) self end |
#before(name) { ... } ⇒ Object
Define before-hook
112 113 114 115 116 117 118 119 |
# File 'lib/aruba/basic_configuration.rb', line 112 def before(name, &block) name = format("%s_%s", "before_", name.to_s).to_sym raise ArgumentError, "A block is required" unless block @hooks.append(name, block) self end |
#configure {|Configuration| ... } ⇒ Object
87 88 89 |
# File 'lib/aruba/basic_configuration.rb', line 87 def configure yield self if block_given? end |
#make_copy ⇒ Object
Make deep dup copy of configuration
97 98 99 100 101 102 103 |
# File 'lib/aruba/basic_configuration.rb', line 97 def make_copy obj = dup obj. = Marshal.load(Marshal.dump()) obj.hooks = @hooks obj end |
#option?(name) ⇒ Boolean
Check if <name> is option
173 174 175 |
# File 'lib/aruba/basic_configuration.rb', line 173 def option?(name) .any? { |_, v| v.name == name.to_sym } end |
#reset ⇒ Object
Reset configuration
92 93 94 |
# File 'lib/aruba/basic_configuration.rb', line 92 def reset initialize_configuration end |
#run_after_hook(name, context, *args) ⇒ Object
Run after-hook
163 164 165 166 167 |
# File 'lib/aruba/basic_configuration.rb', line 163 def run_after_hook(name, context, *args) name = format("%s_%s", "after_", name.to_s).to_sym @hooks.execute(name, context, *args) end |
#run_before_hook(name, context, *args) ⇒ Object
Run before-hook
131 132 133 134 135 |
# File 'lib/aruba/basic_configuration.rb', line 131 def run_before_hook(name, context, *args) name = format("%s_%s", "before_", name.to_s).to_sym @hooks.execute(name, context, *args) end |
#set_if_option(name, *args) ⇒ Object
Set if name is option
182 183 184 |
# File 'lib/aruba/basic_configuration.rb', line 182 def set_if_option(name, *args) public_send("#{name}=".to_sym, *args) if option? name end |