Module: Dry::Initializer::DSL

Included in:
Dry::Initializer, Mixin
Defined in:
lib/dry/initializer/dsl.rb

Overview

Module-level DSL

Instance Attribute Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#nullnil, Dry::Initializer::UNDEFINED (readonly)

Setting for null (undefined value)

Returns:



6
7
8
# File 'lib/dry/initializer/dsl.rb', line 6

def null
  @null
end

Instance Method Details

#[](undefined: true) ⇒ Dry::Initializer

Returns a version of the module with custom settings

Parameters:

  • settings (Hash)

    a customizable set of options

Returns:



12
13
14
15
16
17
18
19
# File 'lib/dry/initializer/dsl.rb', line 12

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) { ... } ⇒ Module

Returns mixin module to be included to target class by hand

Yields:

  • proc defining params and options

Returns:

  • (Module)


24
25
26
27
28
29
# File 'lib/dry/initializer/dsl.rb', line 24

def define(procedure = nil, &block)
  config = Config.new(null: null)
  config.instance_exec(&(procedure || block))
  config.mixin.include Mixin::Root
  config.mixin
end