Sha256: 3850842aebaf8d0d0b8f7ed706d22691345d364698c56b87c33089e231f99392
Contents?: true
Size: 1.2 KB
Versions: 1
Compression:
Stored size: 1.2 KB
Contents
module Dry::Initializer class Option < Attribute # part of __initializer__ definition def initializer_signature "**__options__" end # part of __initializer__ body def initializer_presetter "@#{target} = Dry::Initializer::UNDEFINED" end # part of __initializer__ body def initializer_setter "#{setter_part}#{maybe_optional}" end # part of __defaults__ def default_hash default ? { :"option_#{source}" => default } : {} end # part of __coercers__ def coercer_hash coercer ? { :"option_#{source}" => coercer } : {} end private def maybe_optional " if __options__.key? :'#{source}'" if optional && !default end def setter_part "@#{target} = #{maybe_coerced}" end def maybe_coerced return maybe_default unless coercer "__coercers__[:'option_#{source}'].call(#{maybe_default})" end def maybe_default "__options__.fetch(:'#{source}') { #{default_part} }" end def default_part if default "instance_eval(&__defaults__[:'option_#{source}'])" else "raise ArgumentError, \"option :'#{source}' is required\"" end end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
dry-initializer-1.0.0 | lib/dry/initializer/option.rb |