class Dry::Initializer::Builders::Attribute
@private
Public Class Methods
[](definition)
click to toggle source
# File lib/dry/initializer/builders/attribute.rb, line 8 def self.[](definition) new(definition).call end
new(definition)
click to toggle source
# File lib/dry/initializer/builders/attribute.rb, line 18 def initialize(definition) @definition = definition @option = definition.option @type = definition.type @optional = definition.optional @default = definition.default @source = definition.source @ivar = definition.ivar @null = definition.null ? "Dry::Initializer::UNDEFINED" : "nil" @opts = "__dry_initializer_options__" @congif = "__dry_initializer_config__" @item = "__dry_initializer_definition__" @val = @option ? "__dry_initializer_value__" : @source end
Public Instance Methods
call()
click to toggle source
# File lib/dry/initializer/builders/attribute.rb, line 12 def call lines.compact end
Private Instance Methods
assignment_line()
click to toggle source
# File lib/dry/initializer/builders/attribute.rb, line 83 def assignment_line "#{@ivar} = #{@val}" \ " unless #{@null} == #{@val} && instance_variable_defined?(:#{@ivar})" end
coercion_line()
click to toggle source
# File lib/dry/initializer/builders/attribute.rb, line 71 def coercion_line return unless @type arity = @type.is_a?(Proc) ? @type.arity : @type.method(:call).arity if arity.equal?(1) || arity.negative? "#{@val} = #{@item}.type.call(#{@val}) unless #{@null} == #{@val}" else "#{@val} = #{@item}.type.call(#{@val}, self) unless #{@null} == #{@val}" end end
default_line()
click to toggle source
# File lib/dry/initializer/builders/attribute.rb, line 65 def default_line return unless @default "#{@val} = instance_exec(&#{@item}.default) if #{@null} == #{@val}" end
definition_line()
click to toggle source
# File lib/dry/initializer/builders/attribute.rb, line 59 def definition_line return unless @type || @default "#{@item} = __dry_initializer_config__.definitions[:'#{@source}']" end
lines()
click to toggle source
# File lib/dry/initializer/builders/attribute.rb, line 33 def lines [ "", definition_line, reader_line, default_line, coercion_line, assignment_line ] end
optional_reader()
click to toggle source
# File lib/dry/initializer/builders/attribute.rb, line 50 def optional_reader "#{@val} = #{@opts}.fetch(:'#{@source}', #{@null})" end
reader_line()
click to toggle source
# File lib/dry/initializer/builders/attribute.rb, line 44 def reader_line return unless @option @optional ? optional_reader : required_reader end
required_reader()
click to toggle source
# File lib/dry/initializer/builders/attribute.rb, line 54 def required_reader "#{@val} = #{@opts}.fetch(:'#{@source}')" \ " { raise KeyError, \"\#{self.class}: #{@definition} is required\" }" end