64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
|
# File 'lib/cloud_file/cloud_uri/dsl.rb', line 64
def process_route(route, pattern, keys, conditions, block = nil, values = [])
route = '/' if route.empty? and not settings.empty_path_info?
return unless match = pattern.match(route)
values += match.captures.to_a.map { |v| force_encoding URI.decode(v) if v }
if values.any?
original, @params = params, params.merge('splat' => [], 'captures' => values)
keys.zip(values) { |k,v| Array === @params[k] ? @params[k] << v : @params[k] = v if v }
end
catch(:pass) do
conditions.each { |c| throw :pass if c.bind(self).call == false }
block ? block[self, values] : yield(self, values)
end
ensure
@params = original if original
end
|