Class: ContextFilters::Filters::PriorityFilters

Inherits:
Object
  • Object
show all
Defined in:
lib/context-filters/filters/priority_filters.rb

Overview

list of filters sorted by priorities

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(priorities = nil) ⇒ PriorityFilters

initializes priorities and coresponding list of filters

Parameters:

  • priorities (Array|Object) (defaults to: nil)

    a list of priorities to order filters



19
20
21
22
# File 'lib/context-filters/filters/priority_filters.rb', line 19

def initialize(priorities = nil)
  @priorities = [priorities].flatten.freeze
  @filters_array = @priorities.product([Filters.new])
end

Instance Attribute Details

#prioritiesArray (readonly)

Returns list of priorities this object was initialized with.

Returns:

  • (Array)

    list of priorities this object was initialized with



15
16
17
# File 'lib/context-filters/filters/priority_filters.rb', line 15

def priorities
  @priorities
end

Instance Method Details

#each {|priority, filters| ... } ⇒ Object

iterate over filters ordered by priority

Yields:

  • (priority, filters)

    the next filters from sorted array

Yield Parameters:

  • priority (Object)

    the priority

  • filters (Filters)

    the filters for priority



45
46
47
# File 'lib/context-filters/filters/priority_filters.rb', line 45

def each(&block)
  to_a.each(&block) unless empty?
end

#empty?Boolean

check if all of the filters are empty return [Bolean] true if all filters are empty

Returns:

  • (Boolean)


51
52
53
# File 'lib/context-filters/filters/priority_filters.rb', line 51

def empty?
  @filters_array.map(&:last).all?(&:empty?)
end

#store(priority, options = nil, &block) ⇒ Object

adds a priority filter

Parameters:

  • priority (Object)

    anything that was part of priorities array

  • options (Object) (defaults to: nil)

    forwarded to Filters.store

  • block (Proc)

    forwarded to Filters.store

Raises:

  • (KeyError)

    when priority not matching priorities is used



30
31
32
33
34
# File 'lib/context-filters/filters/priority_filters.rb', line 30

def store(priority, options = nil, &block)
  found = @filters_array.assoc(priority)
  raise KeyError if found.nil?
  found.last.store(options, &block)
end

#to_aObject

list of filters sorted by priorities



37
38
39
# File 'lib/context-filters/filters/priority_filters.rb', line 37

def to_a
  @filters_array
end