Class: ActiveScaffold::DataStructures::Filters

Inherits:
Object
  • Object
show all
Includes:
Enumerable
Defined in:
lib/active_scaffold/data_structures/filters.rb

Constant Summary collapse

@@default_type =
:links

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeFilters

Returns a new instance of Filters.



5
6
7
8
# File 'lib/active_scaffold/data_structures/filters.rb', line 5

def initialize
  @set = []
  @default_type = self.class.default_type
end

Instance Attribute Details

#default_typeObject

default filter type for all filters in this set, can be :links or :select



49
50
51
# File 'lib/active_scaffold/data_structures/filters.rb', line 49

def default_type
  @default_type
end

Instance Method Details

#[](name) ⇒ Object

finds a Filter by matching the name



27
28
29
# File 'lib/active_scaffold/data_structures/filters.rb', line 27

def [](name)
  @set.find { |filter| filter.name.to_s == name.to_s }
end

#add(name, &block) ⇒ Object Also known as: <<

adds a FilterOption, creating one from the arguments if need be

Raises:

  • (ArgumentError)


11
12
13
14
15
16
17
18
19
20
21
22
23
# File 'lib/active_scaffold/data_structures/filters.rb', line 11

def add(name, &block)
  if name.is_a?(ActiveScaffold::DataStructures::Filter)
    filter = name
    name = filter.name
  end
  existing = self[name]
  raise ArgumentError, "there is a filter with '#{name}' name" if existing

  filter ||= ActiveScaffold::DataStructures::Filter.new(name, default_type)
  @set << filter
  block&.call filter
  self
end

#delete(name) ⇒ Object



31
32
33
# File 'lib/active_scaffold/data_structures/filters.rb', line 31

def delete(name)
  @set.delete self[name]
end

#eachObject

iterates over the links, possibly by type



36
37
38
# File 'lib/active_scaffold/data_structures/filters.rb', line 36

def each(&)
  @set.each(&)
end

#empty?Boolean

Returns:

  • (Boolean)


40
41
42
# File 'lib/active_scaffold/data_structures/filters.rb', line 40

def empty?
  @set.empty?
end