class Build::Environment::Evaluator
def initialize(environment)
def initialize(environment) @environment = environment @cache = {} end
def method_missing(name)
def method_missing(name) @cache[name] ||= object_value(@environment[name]) end
def object_value(value)
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
def respond_to?(name, include_private = false)
def respond_to?(name, include_private = false) @environment.include?(name) || super end