Class: Scheming::DSL::DataBuilder

Inherits:
Object
  • Object
show all
Includes:
TypeSpecs
Defined in:
lib/scheming/dsl/data_builder.rb

Overview

Data Builder

Instance Method Summary collapse

Methods included from TypeSpecs

#Enum, #Nullable, #Object

Constructor Details

#initialize(builder = Scheming::Attribute::ListBuilder.new) ⇒ DataBuilder

Returns a new instance of DataBuilder.



7
8
9
10
# File 'lib/scheming/dsl/data_builder.rb', line 7

def initialize(builder = Scheming::Attribute::ListBuilder.new)
  @builder = builder
  @resolver = Scheming::DSL::TypeResolver
end

Instance Method Details

#attribute(field_name, type_spec) ⇒ void

This method returns an undefined value.

Parameters:

  • field_name (Symbol)
  • type_spec (Object)
  • null (Boolean)


16
17
18
19
20
# File 'lib/scheming/dsl/data_builder.rb', line 16

def attribute(field_name, type_spec)
  type = @resolver.resolve(type_spec)
  @builder = @builder.attribute(field_name, type:)
  nil
end

#buildClass

Returns:

  • (Class)


23
24
25
26
27
28
29
30
31
# File 'lib/scheming/dsl/data_builder.rb', line 23

def build
  list = @builder.build
  dto_type = Scheming::Type::Object.new(list)

  data = ::Data.define(*list.map(&:field_name))
  data.instance_variable_set(:@dto_type, dto_type)
  data.include(Scheming::DSL::ObjectTypeDef)
  data
end