Class: Bedouin::Environment::DSL

Inherits:
Object
  • Object
show all
Defined in:
lib/bedouin/environment.rb

Instance Method Summary collapse

Constructor Details

#initialize(filename) ⇒ DSL



14
15
16
# File 'lib/bedouin/environment.rb', line 14

def initialize(filename)
  @filename=filename
end

Instance Method Details

#environment(name, parent = nil, &block) ⇒ Object



40
41
42
43
44
45
# File 'lib/bedouin/environment.rb', line 40

def environment(name,parent=nil,&block)
  parent_hash = resolve_parent(parent)
  e = Environment.new(name,parent_hash)
  e.instance_eval &block if block_given?
  return e
end

#evaluateObject



18
19
20
# File 'lib/bedouin/environment.rb', line 18

def evaluate
  self.instance_eval(File.read(@filename), @filename)
end

#resolve_parent(parent) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/bedouin/environment.rb', line 22

def resolve_parent(parent)
  parent_hash = case parent
  when String
    parent_path = File.expand_path(parent, File.dirname(@filename))
    Environment.parse(parent_path)
  when NilClass
    nil
  else
    parent
  end

  unless parent_hash.respond_to? :to_h
    raise ArgumentError.new "#{parent.class} not a valid type for environment parent"
  end

  parent_hash
end