Class: KeyValueName::KeyValueBuilder
- Inherits:
-
Object
- Object
- KeyValueName::KeyValueBuilder
show all
- Defined in:
- lib/key_value_name/builders/key_value_builder.rb
Overview
Yield-based Domain-Specific Language (DSL) to build a ‘KeyValueName`.
Instance Method Summary
collapse
Constructor Details
Returns a new instance of KeyValueBuilder.
8
9
10
11
|
# File 'lib/key_value_name/builders/key_value_builder.rb', line 8
def initialize(&block)
@marshalers = {}
instance_eval(&block) if block_given?
end
|
Instance Method Details
#build ⇒ Object
32
33
34
35
|
# File 'lib/key_value_name/builders/key_value_builder.rb', line 32
def build
struct_args = @marshalers.any? ? @marshalers.keys : [nil]
Struct.new(*struct_args, keyword_init: true)
end
|
#include_keys(key_value_name_klass) ⇒ Object
17
18
19
20
21
22
23
|
# File 'lib/key_value_name/builders/key_value_builder.rb', line 17
def include_keys(key_value_name_klass)
spec = key_value_name_klass.key_value_name_spec
spec.marshalers.each do |name, marshaler|
check_no_existing_marshaler(name)
@marshalers[name] = marshaler
end
end
|
#key(name, type:, **kwargs) ⇒ Object
25
26
27
28
29
30
|
# File 'lib/key_value_name/builders/key_value_builder.rb', line 25
def key(name, type:, **kwargs)
KeyValueName.check_symbol(name)
KeyValueName.check_marshaler(type)
check_no_existing_marshaler(name)
@marshalers[name] = MARSHALERS[type].new(**kwargs)
end
|
#singular? ⇒ Boolean
13
14
15
|
# File 'lib/key_value_name/builders/key_value_builder.rb', line 13
def singular?
@marshalers.none?
end
|