class Padrino::Filter

def apply?(request)

def apply?(request)
  return true if @args.empty? && @options.empty?
  detect = @args.any? do |arg|
    case arg
    when Symbol then request.route_obj.named == arg or request.route_obj.named == [@scoped_controller, arg].flatten.join("_").to_sym
    else             arg === request.path_info
    end
  end || @options.any? { |name, val|
    case name
    when :agent then val === request.user_agent
    else             val === request.send(name)
    end
  }
  detect ^ !@mode
end

def initialize(mode, scoped_controller, options, args, &block)

def initialize(mode, scoped_controller, options, args, &block)
  @mode, @scoped_controller, @options, @args, @block = mode, scoped_controller, options, args, block
end

def to_proc

def to_proc
  filter = self
  proc {
    instance_eval(&filter.block) if filter.apply?(request)
  }
end