class ParamsReady::Parameter::AbstractDefinition

Attributes

altn[R]
name[R]

Public Class Methods

new(name, altn: nil) click to toggle source
# File lib/params_ready/parameter/definition.rb, line 30
def initialize(name, altn: nil)
  @name = name.to_sym
  @altn = normalize_alternative_name(altn || name)
end

Public Instance Methods

create() click to toggle source
# File lib/params_ready/parameter/definition.rb, line 46
def create
  raise ParamsReadyError, "Can't create '#{name}' using unfrozen definition" unless frozen?
  instance = parameter_class.new self
  if @helpers
    singleton = class << instance; self; end
    @helpers.each do |(name, block)|
      if singleton.method_defined? name
        raise ParamsReadyError, "Helper '#{name}' overrides existing method"
      end

      singleton.send :define_method, name, &block
    end
  end
  instance
end
finish() click to toggle source
# File lib/params_ready/parameter/definition.rb, line 77
def finish
  super
  freeze
end
from_hash(hash, context: nil, validator: Result.new(name)) click to toggle source
# File lib/params_ready/parameter/definition.rb, line 62
def from_hash(hash, context: nil, validator: Result.new(name))
  context = InputContext.resolve(context)
  instance = create
  result = instance.set_from_hash(hash, context: context, validator: validator)
  [result, instance]
end
from_input(input, context: nil, validator: nil) click to toggle source
# File lib/params_ready/parameter/definition.rb, line 69
def from_input(input, context: nil, validator: nil)
  validator ||= Result.new(name)
  context = InputContext.resolve(context)
  instance = create
  result = instance.set_from_input(input, context, validator)
  [result, instance]
end
normalize_alternative_name(name) click to toggle source
# File lib/params_ready/parameter/definition.rb, line 35
def normalize_alternative_name(name)
  if name.is_a? Array
    name.map(&:to_sym)
  else
    name.to_sym
  end
end
parameter_class() click to toggle source
# File lib/params_ready/parameter/definition.rb, line 26
def parameter_class
  self.class.parameter_class
end