def parse_answer(data, scope, extra_data={}, context={:recurse_guard => nil, :order_override => nil})
if data.is_a?(Numeric) or data.is_a?(TrueClass) or data.is_a?(FalseClass)
return data
elsif data.is_a?(String)
return parse_string(data, scope, extra_data, context)
elsif data.is_a?(Hash)
answer = {}
data.each_pair do |key, val|
interpolated_key = parse_string(key, scope, extra_data, context)
answer[interpolated_key] = parse_answer(val, scope, extra_data, context)
end
return answer
elsif data.is_a?(Array)
answer = []
data.each do |item|
answer << parse_answer(item, scope, extra_data, context)
end
return answer
end
end