Class: Might::FilterParameter

Inherits:
Object
  • Object
show all
Defined in:
lib/might/filter_parameter.rb

Overview

User provided filtering on particular parameter

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(value, predicate, definition) ⇒ FilterParameter

Returns a new instance of FilterParameter.



14
15
16
17
18
# File 'lib/might/filter_parameter.rb', line 14

def initialize(value, predicate, definition)
  @value = value
  @predicate = predicate.to_s
  @definition = definition
end

Instance Attribute Details

#definitionParameterDefinition? (readonly)

Returns:

  • (ParameterDefinition, nil)


12
13
14
# File 'lib/might/filter_parameter.rb', line 12

def definition
  @definition
end

#predicateString? (readonly)

Returns:

  • (String, nil)


8
9
10
# File 'lib/might/filter_parameter.rb', line 8

def predicate
  @predicate
end

Instance Method Details

#==(other) ⇒ Object



30
31
32
33
34
35
# File 'lib/might/filter_parameter.rb', line 30

def ==(other)
  is_a?(other.class) &&
    value == other.value &&
    predicate == other.predicate &&
    definition == other.definition
end

#errorsObject



55
56
57
# File 'lib/might/filter_parameter.rb', line 55

def errors
  validators.map(&:errors).flat_map(&:full_messages).compact.uniq
end

#invalid?Boolean

Returns:

  • (Boolean)


51
52
53
# File 'lib/might/filter_parameter.rb', line 51

def invalid?
  validators.any?(&:invalid?)
end

#provided?Boolean

Check if this parameter provided by user. If the parameter defined by not given by user this returns false.

Returns:

  • (Boolean)


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

def provided?
  value.present? && predicate.present?
end

#valid?Boolean

Returns:

  • (Boolean)


47
48
49
# File 'lib/might/filter_parameter.rb', line 47

def valid?
  validators.all?(&:valid?)
end

#valueString+

TODO: memoize

Returns:

  • (String, Array<String>)


39
40
41
42
43
44
45
# File 'lib/might/filter_parameter.rb', line 39

def value
  if @value.is_a?(Array)
    @value.map { |v| definition.coerce(v) }
  else
    definition.coerce(@value)
  end
end