module Dry::Initializer::DSL

Module-level DSL

Attributes

null[R]

Setting for null (undefined value) @return [nil, Dry::Initializer::UNDEFINED]

Private Class Methods

extended(mod) click to toggle source
# File lib/dry/initializer/dsl.rb, line 45
def extended(mod)
  mod.instance_variable_set :@null, UNDEFINED
end

Public Instance Methods

[](undefined: true, **) click to toggle source

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]

# File lib/dry/initializer/dsl.rb, line 15
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
define(procedure = nil, &block) click to toggle source

Returns mixin module to be included to target class by hand @return [Module] @yield proc defining params and options

# File lib/dry/initializer/dsl.rb, line 27
def define(procedure = nil, &block)
  config = Config.new(null: null)
  config.instance_exec(&(procedure || block))
  config.mixin.include Mixin::Root
  config.mixin
end

Private Instance Methods

extended(klass) click to toggle source
# File lib/dry/initializer/dsl.rb, line 36
def extended(klass)
  config = Config.new(klass, null: null)
  klass.send :instance_variable_set, :@dry_initializer, config
  klass.include Mixin::Root
end