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.
14 15 16 17 18 19 |
# File 'lib/persey/builder.rb', line 14 def initialize(environment, defaults, block) @current_env = environment @config = defaults @envs = {} instance_eval(&block) end |
Class Method Details
.build(environment, defaults, &block) ⇒ Object
8 9 10 11 |
# File 'lib/persey/builder.rb', line 8 def build(environment, defaults, &block) b = new(environment, defaults, block) Configus::Config.new(b.result) end |
Instance Method Details
#result(env = nil) ⇒ Object
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/persey/builder.rb', line 21 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 |