class ParamsReady::Parameter::ValueParameterBuilder

Public Class Methods

[](coder_name) click to toggle source
# File lib/params_ready/parameter/value_parameter.rb, line 88
def self.[](coder_name)
  builder = Class.new(self)
  capitalized = coder_name.to_s.split('_').map(&:capitalize).join
  qualified = "#{self.name}::#{capitalized}Builder".freeze

  builder.define_singleton_method :name do
    qualified
  end

  builder.define_singleton_method :instance do |name, altn: nil, **opts|
    superclass.instance(name, coder_name, altn: altn, **opts)
  end

  builder
end
instance(name, coder_or_name = nil, altn: nil, **opts) click to toggle source
# File lib/params_ready/parameter/value_parameter.rb, line 73
def self.instance(name, coder_or_name = nil, altn: nil, **opts)
  coder = if coder_or_name.is_a? Symbol
    coder_class = self.coder(coder_or_name)
    coder_class.instance(**opts)
  else
    raise ParamsReadyError, 'Expected option hash to be empty' unless opts.empty?
    if coder_or_name.nil?
      Value::GenericCoder.new(name)
    else
      coder_or_name
    end
  end
  new ValueParameterDefinition.new(name, coder, altn: altn)
end