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
Calls superclass method
ParamsReady::Extensions::Finalizer::InstanceMethods#finish
# 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