module Rakismet
  module Controller
    
    def self.included(base)
      base.class_eval do
        extend ClassMethods
        around_filter :rakismet
      end
    end
    
    def rakismet(&block)
      Rakismet::Base.rakismet_binding = binding
      yield
      Rakismet::Base.rakismet_binding = nil
    end
    private :rakismet

    module ClassMethods
      def rakismet_filter(opts={})
        skip_filter :rakismet # in case we're inheriting from another Rakismeted controller
        opts.assert_valid_keys(:only, :except)
        self.around_filter :rakismet, opts
      end
    end
    
  end
end