class ParamsReady::Parameter::ValueParameterDefinition

Attributes

coder[R]

Public Class Methods

new(name, coder, *args, constraints: [], **options) click to toggle source
Calls superclass method ParamsReady::Parameter::Definition::new
# File lib/params_ready/parameter/value_parameter.rb, line 147
def initialize(name, coder, *args, constraints: [], **options)
  @coder = coder
  @constraints = constraints
  super name, *args, **options
end

Public Instance Methods

ensure_canonical(value) click to toggle source
# File lib/params_ready/parameter/value_parameter.rb, line 165
def ensure_canonical(value)
  coerced = coder.try_coerce value, Format.instance(:backend)
  if coder.strict_default? && value != coerced
    raise ParamsReadyError, "input '#{value}' (#{value.class.name}) coerced to '#{coerced}' (#{coerced.class.name})"
  end
  validate coerced
  coerced
end
finish() click to toggle source
# File lib/params_ready/parameter/value_parameter.rb, line 180
def finish
  @coder.finish if @coder.respond_to?(:finish)
  super
end
name_for_formatter() click to toggle source
# File lib/params_ready/parameter/value_parameter.rb, line 119
def name_for_formatter
  coder_name = @coder.type_identifier if @coder.respond_to? :type_identifier
  return coder_name unless coder_name.nil?

  super
end
try_canonicalize(input, context, validator = nil) click to toggle source
# File lib/params_ready/parameter/value_parameter.rb, line 153
def try_canonicalize(input, context, validator = nil)
  value = coder.try_coerce input, context
  return value if Extensions::Undefined.value_indefinite?(value)

  value, validator = validate value, validator
  if validator.nil? || validator.ok?
    [value.freeze, validator]
  else
    [nil, validator]
  end
end
validate(value, validator = nil) click to toggle source
# File lib/params_ready/parameter/value_parameter.rb, line 174
def validate(value, validator = nil)
  constraints.reduce([value, validator]) do |(value, validator), constraint|
    constraint.validate value, validator
  end
end