Class: ContextFilters::PriorityFilters

Inherits:
Object
  • Object
show all
Defined in:
lib/context-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



17
18
19
20
# File 'lib/context-filters/priority_filters.rb', line 17

def initialize(priorities = nil)
  @priorities = [priorities].flatten.freeze
  @filters_array = @priorities.product([ContextFilters::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



13
14
15
# File 'lib/context-filters/priority_filters.rb', line 13

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



43
44
45
# File 'lib/context-filters/priority_filters.rb', line 43

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)


49
50
51
# File 'lib/context-filters/priority_filters.rb', line 49

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



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

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



35
36
37
# File 'lib/context-filters/priority_filters.rb', line 35

def to_a
  @filters_array
end