# File lib/brakeman/processors/lib/rails3_route_processor.rb, line 90
  def process_match exp
    first_arg = exp.first_arg
    second_arg = exp.second_arg
    last_arg = exp.last_arg

    if string? first_arg

      matcher = first_arg.value
      if matcher == ':controller(/:action(/:id(.:format)))' or
        matcher.include? ':controller' and action_route?(matcher)  #Default routes
        @tracker.routes[:allow_all_actions] = first_arg
        return exp
      elsif action_route?(first_arg)
          if hash? second_arg and controller_name = hash_access(second_arg, :controller)
            loose_action(controller_name, "matched") #TODO: Parse verbs
          end
      elsif second_arg.nil? and in_controller_block? and not matcher.include? ":"
        add_route matcher
      end
    end

    if hash? last_arg
      hash_iterate last_arg do |k, v|
        if string? k
          if string? v
            add_route_from_string v
          elsif in_controller_block? and symbol? v
            add_route v
          end
        elsif symbol? k
         case k.value
         when :action
          if string? v
            add_route_from_string v
          else
            add_route v
          end

         when :to
           if string? v
             add_route_from_string v[1]
           elsif in_controller_block? and symbol? v
             add_route v
           end
         end
        end
      end
    end

    @current_controller = nil unless in_controller_block?
    exp
  end