def evaluate_object(object)
case object
when NilClass
return nil
when String
object = object.gsub(/#\{.+?\}/) do |match|
property = match[2..-2]
value = get_property(property)
error "Property '#{property}' was not defined" unless value
value
end
return object
when Symbol
property = object.to_s
value = get_property(property, true)
return evaluate_object(value)
when Array
return object.collect { |element| evaluate_object(element) }
when Hash
evaluated = {}
object.each_pair do |key, value|
evaluated[evaluate_object(key)] = evaluate_object(value)
end
return evaluated
else
return object
end
end