class Build::Environment::Evaluator

def initialize(environment)

def initialize(environment)
	@environment = environment
end

def method_missing(name)

def method_missing(name)
	object_value(@environment[name])
end

def object_value(value)

Compute the literal object value for a given key:
def object_value(value)
	case value
	when Array
		value.collect{|item| object_value(item)}.flatten
	when Symbol
		object_value(@environment[value])
	when Proc
		object_value(instance_exec(&value))
	when Default
		object_value(value.value)
	when Replace
		object_value(value.value)
	else
		value
	end
end