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.



16
17
18
19
20
# File 'lib/might/filter_parameter.rb', line 16

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

Instance Attribute Details

#definitionParameterDefinition? (readonly)

Returns:

  • (ParameterDefinition, nil)


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

def definition
  @definition
end

#predicateString? (readonly)

Returns:

  • (String, nil)


10
11
12
# File 'lib/might/filter_parameter.rb', line 10

def predicate
  @predicate
end

Instance Method Details

#==(other) ⇒ Object



32
33
34
35
36
37
# File 'lib/might/filter_parameter.rb', line 32

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

#errorsObject



57
58
59
# File 'lib/might/filter_parameter.rb', line 57

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

#invalid?Boolean

Returns:

  • (Boolean)


53
54
55
# File 'lib/might/filter_parameter.rb', line 53

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)


28
29
30
# File 'lib/might/filter_parameter.rb', line 28

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

#valid?Boolean

Returns:

  • (Boolean)


49
50
51
# File 'lib/might/filter_parameter.rb', line 49

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

#valueString+

TODO: memoize

Returns:

  • (String, Array<String>)


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

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