Class: DynamicSchema::Builder
Instance Method Summary
collapse
Methods included from Converter
#convert, #register_converter
Methods included from Validator
#valid?, #validate, #validate!
Constructor Details
Returns a new instance of Builder.
9
10
11
12
|
# File 'lib/dynamic_schema/builder.rb', line 9
def initialize
self.compiled_schema = nil
@schema_blocks = []
end
|
Instance Method Details
#build(values = nil, defaults: true, &block) ⇒ Object
32
33
34
35
36
37
38
39
|
# File 'lib/dynamic_schema/builder.rb', line 32
def build( values = nil, defaults: true, &block )
receiver = Receiver::Object.new( values,
schema: self.compiled_schema,
converter: self,
defaults: defaults )
receiver.instance_eval( &block ) if block
receiver.to_h
end
|
#build_from_bytes(bytes, filename: '(schema)', values: nil, defaults: true) ⇒ Object
41
42
43
44
45
46
47
48
|
# File 'lib/dynamic_schema/builder.rb', line 41
def build_from_bytes( bytes, filename: '(schema)', values: nil, defaults: true )
receiver = Receiver::Object.new( values,
schema: compiled_schema,
converter: self,
defaults: defaults )
receiver.instance_eval( bytes, filename, 1 )
receiver.to_h
end
|
#build_from_file(path, values: nil, defaults: true) ⇒ Object
50
51
52
53
54
55
|
# File 'lib/dynamic_schema/builder.rb', line 50
def build_from_file( path, values: nil, defaults: true )
self.build_from_bytes(
File.read( path, encoding: 'UTF-8' ),
filename: path, values: values, defaults: defaults
)
end
|
#define(inherit: nil, &block) ⇒ Object
14
15
16
17
18
19
20
21
22
23
|
# File 'lib/dynamic_schema/builder.rb', line 14
def define( inherit: nil, &block )
@schema_blocks << inherit if inherit
@schema_blocks << block if block
compiler = Compiler.new( self.compiled_schema )
compiler.compile( &inherit ) if inherit
compiler.compile( &block ) if block
self.compiled_schema = compiler.compiled
self
end
|
#schema ⇒ Object
25
26
27
28
29
30
|
# File 'lib/dynamic_schema/builder.rb', line 25
def schema
blocks = @schema_blocks.dup
proc do
blocks.each { | block | instance_eval( &block ) }
end
end
|