class Right::FilterParameter

User provided filtering on particular parameter

Attributes

definition[R]

@return [ParameterDefinition, nil]

predicate[R]

@return [String, nil]

Public Class Methods

new(value, predicate, definition) click to toggle source
# File lib/right/filter_parameter.rb, line 14
def initialize(value, predicate, definition)
  @value = value
  @predicate = predicate.to_s
  @definition = definition
end

Public Instance Methods

==(other) click to toggle source
# File lib/right/filter_parameter.rb, line 30
def ==(other)
  is_a?(other.class) &&
    value == other.value &&
    predicate == other.predicate &&
    definition == other.definition
end
errors() click to toggle source
# File lib/right/filter_parameter.rb, line 55
def errors
  validators.map(&:errors).flat_map(&:full_messages).compact.uniq
end
invalid?() click to toggle source
# File lib/right/filter_parameter.rb, line 51
def invalid?
  validators.any?(&:invalid?)
end
provided?() click to toggle source

Check if this parameter provided by user. If the parameter defined by not given by user this returns false. @return [Boolean]

# File lib/right/filter_parameter.rb, line 26
def provided?
  value.present? && predicate.present?
end
valid?() click to toggle source
# File lib/right/filter_parameter.rb, line 47
def valid?
  validators.all?(&:valid?)
end
value() click to toggle source

@return [String, Array<String>] TODO: memoize

# File lib/right/filter_parameter.rb, line 39
def value
  if @value.is_a?(Array)
    @value.map { |v| definition.coerce(v) }
  else
    definition.coerce(@value)
  end
end

Private Instance Methods

validators() click to toggle source
# File lib/right/filter_parameter.rb, line 61
def validators
  values_for_validation = @value.is_a?(Array) ? @value : [@value]
  @validators ||= values_for_validation.map { |v| definition.validator.new(v) }
end