Sha256: 14266572b3fa6e509719d36675541730e11bbd5c631ddcefb9a3af445eba3b43
Contents?: true
Size: 1.27 KB
Versions: 2
Compression:
Stored size: 1.27 KB
Contents
module Dry::Initializer class Option < Attribute # part of __initializer__ definition def initializer_signature "**__options__" end # parts of __initalizer__ def presetter "@#{target} = Dry::Initializer::UNDEFINED" if dispensable? end def safe_setter "@#{target} = #{safe_coerced}#{maybe_optional}" end def fast_setter return safe_setter unless dispensable? "@#{target} = __options__.key?(:'#{source}') ? #{safe_coerced} : " \ "Dry::Initializer::UNDEFINED" end # part of __defaults__ def default_hash super :option end # part of __coercers__ def coercer_hash super :option end private def dispensable? optional && !default end def maybe_optional " if __options__.key? :'#{source}'" if dispensable? end def safe_coerced return safe_default unless coercer "__coercers__[:'option_#{source}'].call(#{safe_default})" end def safe_default "__options__.fetch(:'#{source}')#{default_part}" end def default_part if default " { instance_eval(&__defaults__[:'option_#{source}']) }" elsif !optional " { raise ArgumentError, \"option :'#{source}' is required\" }" end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
dry-initializer-1.1.2 | lib/dry/initializer/option.rb |
dry-initializer-1.1.1 | lib/dry/initializer/option.rb |