def process_verb exp
first_arg = exp.first_arg
second_arg = exp.second_arg
if symbol? first_arg and not hash? second_arg
add_route first_arg
elsif hash? second_arg
hash_iterate second_arg do |k, v|
if symbol? k and k.value == :to
if string? v
add_route_from_string v
elsif in_controller_block? and symbol? v
add_route v
end
elsif action_route?(first_arg)
if hash? second_arg and controller_name = hash_access(second_arg, :controller)
loose_action(controller_name, exp.method)
end
end
end
elsif string? first_arg
if first_arg.value.include? ':controller' and action_route?(first_arg)
@tracker.routes[:allow_all_actions] = first_arg
end
route = first_arg.value.split "/"
if route.length != 2
add_route route[0]
else
add_route route[1], route[0]
end
else hash? first_arg
hash_iterate first_arg do |k, v|
if string? k
if string? v
add_route_from_string v
elsif in_controller_block?
add_route v
end
end
end
end
@current_controller = nil unless in_controller_block?
exp
end