Class: Might::FilterParameters

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
Comparable, Enumerable
Defined in:
lib/might/filter_parameters.rb

Constant Summary collapse

FilterError =
Class.new(KeyError)

Instance Method Summary collapse

Constructor Details

#initialize(parameters = nil) ⇒ FilterParameters

Returns a new instance of FilterParameters.

Parameters:



14
15
16
# File 'lib/might/filter_parameters.rb', line 14

def initialize(parameters = nil)
  @parameters = Set.new(parameters)
end

Instance Method Details

#+(other) ⇒ Object

param other [Might::FilterParameters]



76
77
78
# File 'lib/might/filter_parameters.rb', line 76

def +(other)
  self.class.new(parameters.merge(other.parameters))
end

#-(other) ⇒ Object

param other [Might::FilterParameters]



71
72
73
# File 'lib/might/filter_parameters.rb', line 71

def -(other)
  self.class.new(parameters - other.parameters)
end

#<=>(other) ⇒ Object



90
91
92
# File 'lib/might/filter_parameters.rb', line 90

def <=>(other)
  parameters <=> other.parameters
end

#[](name, predicate = nil) ⇒ Might::FilterParameter?

Find filter by name

Parameters:

  • name (String)
  • predicate (String) (defaults to: nil)

Returns:



35
36
37
38
39
# File 'lib/might/filter_parameters.rb', line 35

def [](name, predicate = nil)
  parameters.detect do |filter|
    filter.name == name && (predicate.nil? || filter.predicate == predicate)
  end
end

#add(value) ⇒ Object Also known as: <<

param value [Might::FilterParameter]



60
61
62
# File 'lib/might/filter_parameters.rb', line 60

def add(value)
  self.class.new(parameters.add(value))
end

#delete(name, predicate = nil) ⇒ Might::FilterParameter?

Delete filter by name and predicate

Parameters:

  • name (String)
  • predicate (String) (defaults to: nil)

Returns:



84
85
86
87
88
# File 'lib/might/filter_parameters.rb', line 84

def delete(name, predicate = nil)
  filter_parameter = self[name, predicate]
  parameters.delete(filter_parameter) if filter_parameter
  filter_parameter
end

#fetch(name, predicate = nil) {|name| ... } ⇒ Might::FilterParameter

Find filter by name or raise error

Parameters:

  • name (String)
  • predicate (String) (defaults to: nil)

Yield Parameters:

  • name (String)

    block value will be returned if no ‘FilterParameter` found with specified name

Returns:

Raises:

  • FilterError



49
50
51
52
53
54
55
56
57
# File 'lib/might/filter_parameters.rb', line 49

def fetch(name, predicate = nil)
  if (filter = self[name, predicate])
    filter
  elsif block_given?
    yield(name)
  else
    fail FilterError, "filter not found: #{name.inspect}"
  end
end

#initialize_clone(orig) ⇒ Object

Clone internal set.



25
26
27
28
# File 'lib/might/filter_parameters.rb', line 25

def initialize_clone(orig)
  super
  @parameters = orig.parameters.clone
end

#initialize_dup(orig) ⇒ Object

Dup internal set.



19
20
21
22
# File 'lib/might/filter_parameters.rb', line 19

def initialize_dup(orig)
  super
  @parameters = orig.parameters.dup
end

#map(&block) ⇒ Object



66
67
68
# File 'lib/might/filter_parameters.rb', line 66

def map(&block)
  self.class.new(parameters.map(&block))
end