Class: EvilEvents::Shared::TypeConverter::TypeBuilder

Inherits:
Object
  • Object
show all
Defined in:
lib/evil_events/shared/type_converter/type_builder.rb

Overview

Since:

  • 0.2.0

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeTypeBuilder

Returns a new instance of TypeBuilder.

Since:

  • 0.2.0



9
10
11
# File 'lib/evil_events/shared/type_converter/type_builder.rb', line 9

def initialize
  @type_atom = Concurrent::Atom.new(EvilEvents::Shared::Types::Any)
end

Instance Attribute Details

#type_atomConcurrent::Atom<EvilEvents::Shared::Types::Any> (readonly, private)

Returns:

  • (Concurrent::Atom<EvilEvents::Shared::Types::Any>)

Since:

  • 0.2.0



49
50
51
# File 'lib/evil_events/shared/type_converter/type_builder.rb', line 49

def type_atom
  @type_atom
end

Instance Method Details

#append(option, value) ⇒ Object

Returns self.

Parameters:

  • option (Symbol)
  • value (Mixed)

Returns:

  • self

Since:

  • 0.2.0



19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
# File 'lib/evil_events/shared/type_converter/type_builder.rb', line 19

def append(option, value)
  type_atom.swap do |type|
    case option
    when :default
      # NOTE: Dry::Types callable wrapper (see Dry::Types::Default::Callable#evaulate)
      default_value = value.is_a?(Proc) ? (->(_type) { value.call }) : (proc { value })
      type.default(default_value)
    when :constructor
      type.constructor(value)
    else
      type
    end
  end

  self
end

#resultEvilEvents::Shared::Types::Any

Returns:

  • (EvilEvents::Shared::Types::Any)

Since:

  • 0.2.0



40
41
42
# File 'lib/evil_events/shared/type_converter/type_builder.rb', line 40

def result
  type_atom.value
end