Sha256: 51e76f8ea7baeb60214f024f0d8837d245706a4f709c9dea36d41ad04235bfe5
Contents?: true
Size: 1.37 KB
Versions: 2
Compression:
Stored size: 1.37 KB
Contents
# frozen_string_literal: true module Dry module Initializer # Module-level DSL module DSL # Setting for null (undefined value) # @return [nil, Dry::Initializer::UNDEFINED] attr_reader :null # Returns a version of the module with custom settings # @option settings [Boolean] :undefined # If unassigned params and options should be treated different from nil # @return [Dry::Initializer] def [](undefined: true, **) null = undefined == false ? nil : UNDEFINED Module.new.tap do |mod| mod.extend DSL mod.include self mod.send(:instance_variable_set, :@null, null) end end # Returns mixin module to be included to target class by hand # @return [Module] # @yield proc defining params and options def define(procedure = nil, &block) config = Config.new(null: null) config.instance_exec(&(procedure || block)) config.mixin.include Mixin::Root config.mixin end private def extended(klass) config = Config.new(klass, null: null) klass.send :instance_variable_set, :@dry_initializer, config klass.include Mixin::Root end class << self private def extended(mod) mod.instance_variable_set :@null, UNDEFINED end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
dry-initializer-3.1.1 | lib/dry/initializer/dsl.rb |
dry-initializer-3.1.0 | lib/dry/initializer/dsl.rb |