Class: Persey::Builder
- Inherits:
-
Object
- Object
- Persey::Builder
- Defined in:
- lib/persey/builder.rb
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(environment, defaults, block) ⇒ Builder
constructor
A new instance of Builder.
- #result(env = nil) ⇒ Object
Constructor Details
#initialize(environment, defaults, block) ⇒ Builder
Returns a new instance of Builder.
12 13 14 15 16 17 |
# File 'lib/persey/builder.rb', line 12 def initialize(environment, defaults, block) @current_env = environment @config = defaults @envs = {} instance_eval(&block) end |
Class Method Details
.build(environment, defaults, &block) ⇒ Object
6 7 8 9 |
# File 'lib/persey/builder.rb', line 6 def build(environment, defaults, &block) b = new(environment, defaults, block) Configus::Config.new(b.result) end |
Instance Method Details
#result(env = nil) ⇒ Object
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
# File 'lib/persey/builder.rb', line 19 def result(env = nil) e = env || @current_env edata = @envs[e] raise ArgumentError, "Undefined environment '#{ env }" if edata.nil? current_config = {} if edata[:block] current_config = (edata[:block]) end parent = edata[:options][:parent] if parent parent_config = result(parent) current_config = deep_merge(parent_config, current_config) end current_config = @config.deep_merge(current_config) end |