Class: Scheming::DSL::DataBuilder
- Inherits:
-
Object
- Object
- Scheming::DSL::DataBuilder
- Includes:
- TypeSpecs
- Defined in:
- lib/scheming/dsl/data_builder.rb
Overview
Data Builder
Instance Method Summary collapse
- #attribute(field_name, type_spec) ⇒ void
- #build ⇒ Class
-
#initialize(builder = Scheming::Attribute::ListBuilder.new) ⇒ DataBuilder
constructor
A new instance of DataBuilder.
Methods included from TypeSpecs
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.
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 |
#build ⇒ 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 |