dynamicschema 1.0.0.beta03 → 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +1 -1
- data/dynamicschema.gemspec +1 -1
- data/lib/dynamic_schema/builder.rb +1 -1
- data/lib/dynamic_schema/builder_methods/validation.rb +2 -2
- data/lib/dynamic_schema/receiver.rb +2 -2
- data/lib/dynamic_schema/resolver.rb +27 -24
- metadata +3 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3d54fbc1c5dafddb6d0cd08445f1c8d34cf9e3ab56532d606f773a06a5706862
|
4
|
+
data.tar.gz: 3283113491a276388ad171c1364e7a1f71a3bb9ed6ec70efa9cdfe7cc1b11b1d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: de140ec999832c80332b96c9be76e4a8f6947bb85cc885a879597d480b0c94cad064ddefe1d9ec78dae43ebb385a95c16d21f7272e092e2e20ccb50368261835
|
7
|
+
data.tar.gz: 3f2b50815dfa7687f23c59421fc91bccc1c0b7f4db8cba9aacd54ff1b53e9f7eba1ade96727c7c556d1671166f5fbdf056bc514e83b503dbacb128e7d5773a36
|
data/README.md
CHANGED
@@ -194,7 +194,7 @@ schema = DynamicSchema.define do
|
|
194
194
|
chat_options do
|
195
195
|
model String, default: 'claude-3'
|
196
196
|
max_tokens Integer, default: 1024
|
197
|
-
temperature
|
197
|
+
temperature Float, default: 0.5, in: 0..1
|
198
198
|
stream [ TrueClass, FalseClass ]
|
199
199
|
end
|
200
200
|
end
|
data/dynamicschema.gemspec
CHANGED
@@ -61,7 +61,7 @@ module DynamicSchema
|
|
61
61
|
if criteria[ :type ] == Object
|
62
62
|
traverse_and_validate_values(
|
63
63
|
values[ name ],
|
64
|
-
schema: criteria[ :schema ] ||= criteria[ :resolver ].
|
64
|
+
schema: criteria[ :schema ] ||= criteria[ :resolver ]._schema,
|
65
65
|
path: "#{ ( path || '' ) + ( path ? '/' : '' ) + key.to_s }",
|
66
66
|
&block
|
67
67
|
)
|
@@ -80,7 +80,7 @@ module DynamicSchema
|
|
80
80
|
groups.each do | group |
|
81
81
|
traverse_and_validate_values(
|
82
82
|
group,
|
83
|
-
schema: criteria[ :schema ] ||= criteria[ :resolver ].
|
83
|
+
schema: criteria[ :schema ] ||= criteria[ :resolver ]._schema,
|
84
84
|
path: "#{ ( path || '' ) + ( path ? '/' : '' ) + key.to_s }",
|
85
85
|
&block
|
86
86
|
)
|
@@ -197,7 +197,7 @@ module DynamicSchema
|
|
197
197
|
Receiver.new(
|
198
198
|
attributes,
|
199
199
|
converters: @converters,
|
200
|
-
schema: criteria[ :schema ] ||= criteria[ :resolver ].
|
200
|
+
schema: criteria[ :schema ] ||= criteria[ :resolver ]._schema
|
201
201
|
)
|
202
202
|
end
|
203
203
|
value.instance_eval( &block ) if block
|
@@ -213,7 +213,7 @@ module DynamicSchema
|
|
213
213
|
receiver = Receiver.new(
|
214
214
|
a,
|
215
215
|
converters: @converters,
|
216
|
-
schema: criteria[ :schema ] ||= criteria[ :resolver ].
|
216
|
+
schema: criteria[ :schema ] ||= criteria[ :resolver ]._schema
|
217
217
|
)
|
218
218
|
receiver.instance_eval( &block ) if block
|
219
219
|
receiver
|
@@ -22,7 +22,8 @@ module DynamicSchema
|
|
22
22
|
self
|
23
23
|
end
|
24
24
|
|
25
|
-
def
|
25
|
+
def _schema
|
26
|
+
|
26
27
|
if !@resolved && @block
|
27
28
|
@resolved_blocks << @block unless @resolved_blocks.include?( @block )
|
28
29
|
self.instance_eval( &@block )
|
@@ -31,6 +32,29 @@ module DynamicSchema
|
|
31
32
|
@schema
|
32
33
|
end
|
33
34
|
|
35
|
+
def _value( name, options )
|
36
|
+
name = name.to_sym
|
37
|
+
::Kernel.raise ::NameError, "The name '#{name}' is reserved and cannot be used for parameters." \
|
38
|
+
if ::DynamicSchema::Receiver.instance_methods.include?( name )
|
39
|
+
|
40
|
+
_validate_in!( name, options[ :type ], options[ :in ] ) if options[ :in ]
|
41
|
+
|
42
|
+
@schema[ name ] = options
|
43
|
+
self
|
44
|
+
end
|
45
|
+
|
46
|
+
def _object( name, options = {}, &block )
|
47
|
+
name = name.to_sym
|
48
|
+
::Kernel.raise ::NameError, "The name '#{name}' is reserved and cannot be used for parameters." \
|
49
|
+
if ::DynamicSchema::Receiver.instance_methods.include?( name )
|
50
|
+
|
51
|
+
@schema[ name ] = options.merge( {
|
52
|
+
type: ::Object,
|
53
|
+
resolver: Resolver.new( resolved_blocks: @resolved_blocks ).resolve( &block )
|
54
|
+
} )
|
55
|
+
self
|
56
|
+
end
|
57
|
+
|
34
58
|
def method_missing( method, *args, &block )
|
35
59
|
first = args.first
|
36
60
|
options = nil
|
@@ -58,9 +82,9 @@ module DynamicSchema
|
|
58
82
|
|
59
83
|
type = options[ :type ]
|
60
84
|
if type == ::Object || type.nil? && block
|
61
|
-
|
85
|
+
_object( method, options, &block )
|
62
86
|
else
|
63
|
-
|
87
|
+
_value( method, options )
|
64
88
|
end
|
65
89
|
|
66
90
|
end
|
@@ -92,27 +116,6 @@ module DynamicSchema
|
|
92
116
|
|
93
117
|
private
|
94
118
|
|
95
|
-
def _append_value( name, options )
|
96
|
-
::Kernel.raise ::NameError, "The name '#{name}' is reserved and cannot be used for parameters." \
|
97
|
-
if ::DynamicSchema::Receiver.instance_methods.include?( name )
|
98
|
-
|
99
|
-
_validate_in!( name, options[ :type ], options[ :in ] ) if options[ :in ]
|
100
|
-
|
101
|
-
@schema[ name ] = options
|
102
|
-
self
|
103
|
-
end
|
104
|
-
|
105
|
-
def _append_object( name, options = {}, &block )
|
106
|
-
::Kernel.raise ::NameError, "The name '#{name}' is reserved and cannot be used for parameters." \
|
107
|
-
if ::DynamicSchema::Receiver.instance_methods.include?( name )
|
108
|
-
|
109
|
-
@schema[ name ] = options.merge( {
|
110
|
-
type: ::Object,
|
111
|
-
resolver: Resolver.new( resolved_blocks: @resolved_blocks ).resolve( &block )
|
112
|
-
} )
|
113
|
-
self
|
114
|
-
end
|
115
|
-
|
116
119
|
def _validate_in!( name, type, in_option )
|
117
120
|
::Kernel.raise ::TypeError,
|
118
121
|
"The parameter '#{name}' includes the :in option but it does not respond to 'include?'." \
|
metadata
CHANGED
@@ -1,14 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dynamicschema
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.0
|
4
|
+
version: 1.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kristoph Cichocki-Romanov
|
8
|
-
autorequire:
|
9
8
|
bindir: bin
|
10
9
|
cert_chain: []
|
11
|
-
date:
|
10
|
+
date: 2025-06-06 00:00:00.000000000 Z
|
12
11
|
dependencies:
|
13
12
|
- !ruby/object:Gem::Dependency
|
14
13
|
name: rspec
|
@@ -69,7 +68,6 @@ licenses:
|
|
69
68
|
metadata:
|
70
69
|
source_code_uri: https://github.com/EndlessInternational/dynamic_schema
|
71
70
|
bug_tracker_uri: https://github.com/EndlessInternational/dynamic_schema/issues
|
72
|
-
post_install_message:
|
73
71
|
rdoc_options: []
|
74
72
|
require_paths:
|
75
73
|
- lib
|
@@ -84,8 +82,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
84
82
|
- !ruby/object:Gem::Version
|
85
83
|
version: '0'
|
86
84
|
requirements: []
|
87
|
-
rubygems_version: 3.
|
88
|
-
signing_key:
|
85
|
+
rubygems_version: 3.6.2
|
89
86
|
specification_version: 4
|
90
87
|
summary: DynamicSchema is a lightweight and simple yet powerful gem that enables flexible
|
91
88
|
semantic schema definitions for constructing and validating complex configurations
|