Sha256: 81c310eb2e81e67fbfbfb990528b26d4b6aa8932cf3bf2417be228eb84146bd8
Contents?: true
Size: 902 Bytes
Versions: 2
Compression:
Stored size: 902 Bytes
Contents
module Dry::Initializer module DSL attr_reader :config def [](**settings) Module.new do extend Dry::Initializer::DSL include Dry::Initializer @config = settings end end def define(fn = nil, &block) mixin = Module.new do def initialize(*args) __initialize__(*args) end end builder = Builder.new Hash(config) builder.instance_exec(&(fn || block)) builder.call(mixin) mixin end private def extended(klass) super mixin = klass.send(:__initializer_mixin__) builder = klass.send(:__initializer_builder__, Hash(config)) builder.call(mixin) klass.include(mixin) klass.send(:define_method, :initialize) do |*args| __initialize__(*args) end end def mixin(fn = nil, &block) define(fn, &block) end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
dry-initializer-1.4.0 | lib/dry/initializer/dsl.rb |
dry-initializer-1.3.0 | lib/dry/initializer/dsl.rb |