Sha256: 839fe6e808861a6dbcc009e0080cf462afacf98ca2e589a80017c5a756291c7b
Contents?: true
Size: 751 Bytes
Versions: 3
Compression:
Stored size: 751 Bytes
Contents
module Dry::Initializer # Carries declarations for arguments along with a mixin module # # @api private # class Builder def arguments @arguments ||= Arguments.new end def mixin @mixin ||= Module.new end def define_initializer(name, **options) @arguments = arguments.add(name, **options) mixin.instance_eval @arguments.declaration end def define_attributes_reader(name, keys) symbol_keys = keys.map { |key| ":" << key.to_s }.join(", ") key = '@#{key}' mixin.class_eval <<-RUBY def #{name} [#{symbol_keys}].inject({}) do |hash, key| hash.merge key => instance_variable_get(:"#{key}") end end RUBY end end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
dry-initializer-0.1.1 | lib/dry/initializer/builder.rb |
dry-initializer-0.1.0 | lib/dry/initializer/builder.rb |
dry-initializer-0.0.1 | lib/dry/initializer/builder.rb |