Class: ActiveFacet::Filter

Inherits:
Object
  • Object
show all
Defined in:
lib/active_facet/filter.rb

Class Method Summary collapse

Class Method Details

.apply_globals_to(receiver) ⇒ Class

Register queued filters for given resource class

Parameters:

  • receiver (Class)

    resource class

Returns:

  • (Class)

    for chaining

Raises:



35
36
37
38
39
40
41
42
# File 'lib/active_facet/filter.rb', line 35

def self.apply_globals_to(receiver)
  raise ActiveFacet::Errors::ConfigurationError.new(ActiveFacet::Errors::ConfigurationError::ACTS_AS_ERROR_MSG) unless filterable?(receiver)
  global_filters.each do |filter_name, filter_method|
    filter_method_name = receiver.acts_as_active_facet_options[:filter_method_name]
    receiver.send(filter_method_name, filter_name, filter_method)
  end
  receiver
end

.filterable?(receiver) ⇒ Boolean

Tells if any filters can be registered for the given resource class

Returns:

  • (Boolean)


58
59
60
# File 'lib/active_facet/filter.rb', line 58

def self.filterable?(receiver)
  receiver.ancestors.include? ActiveFacet::ActsAsActiveFacet
end

.register(receiver, filter_name, filter_method_name) ⇒ Class

Tells that the receiver class implements a filter

Parameters:

  • receiver (Class)

    resource class

  • filter_name (Symbol)
  • filter_method_name (Symbol)

    name of method defined on receiver instances which implments the filter

Returns:

  • (Class)

    for chaining

Raises:



25
26
27
28
29
30
# File 'lib/active_facet/filter.rb', line 25

def self.register(receiver, filter_name, filter_method_name)
  raise ActiveFacet::Errors::ConfigurationError.new(ActiveFacet::Errors::ConfigurationError::ACTS_AS_ERROR_MSG) unless filterable?(receiver)
  receiver_filters = filters[receiver.name] ||= {}
  receiver_filters[filter_name.to_sym] = filter_method_name.to_sym
  receiver
end

.register_global(filter_name, filter_method) ⇒ Proc

Queues a filter to be applied to resource classes

Parameters:

  • filter_name (Symbol)
  • filter_method (Proc)

    method body code which implements the filter

Returns:

  • (Proc)

    for chaining



16
17
18
# File 'lib/active_facet/filter.rb', line 16

def self.register_global(filter_name, filter_method)
  global_filters[filter_name.to_sym] = filter_method
end

.registered_filters_for(receiver) ⇒ Hash

Returns the list of filters the resource class implements Memoized

Parameters:

  • receiver (Class)

    resource class

Returns:

  • (Hash)

    all filters registered on this resource (and superclass)



48
49
50
51
52
53
54
# File 'lib/active_facet/filter.rb', line 48

def self.registered_filters_for(receiver)
  registered_filters[receiver.name] ||= begin
    receiver_filters = filters[receiver.name] ||= {}
    receiver_filters.reverse_merge!(registered_filters_for(receiver.superclass)) if filterable?(receiver.superclass)
    receiver_filters
  end
end