schemurai 3.0.1 → 3.0.2
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 +6 -4
- data/ext/schemurai_native/Cargo.lock +48 -1
- data/ext/schemurai_native/Cargo.toml +3 -1
- data/ext/schemurai_native/extconf.rb +1 -1
- data/ext/schemurai_native/glue.c +1679 -62
- data/ext/schemurai_native/protocol.def +45 -0
- data/ext/schemurai_native/src/budget.rs +49 -0
- data/ext/schemurai_native/src/container.rs +460 -0
- data/ext/schemurai_native/src/content.rs +56 -27
- data/ext/schemurai_native/src/diagnostics/array.rs +392 -0
- data/ext/schemurai_native/src/diagnostics/object.rs +218 -0
- data/ext/schemurai_native/src/diagnostics.rs +1087 -307
- data/ext/schemurai_native/src/enumeration.rs +6 -1
- data/ext/schemurai_native/src/evaluation.rs +49 -20
- data/ext/schemurai_native/src/format.rs +8 -6
- data/ext/schemurai_native/src/graph.rs +37 -0
- data/ext/schemurai_native/src/instance_graph.rs +90 -0
- data/ext/schemurai_native/src/lib.rs +910 -237
- data/ext/schemurai_native/src/memo.rs +11 -38
- data/ext/schemurai_native/src/number/arbitrary.rs +154 -0
- data/ext/schemurai_native/src/number.rs +250 -59
- data/ext/schemurai_native/src/pattern.rs +113 -101
- data/ext/schemurai_native/src/pointer.rs +97 -0
- data/ext/schemurai_native/src/runtime/properties.rs +162 -0
- data/ext/schemurai_native/src/runtime/reports.rs +266 -0
- data/ext/schemurai_native/src/runtime/scopes.rs +430 -0
- data/ext/schemurai_native/src/runtime.rs +1020 -0
- data/ext/schemurai_native/src/scope.rs +60 -16
- data/ext/schemurai_native/src/string.rs +68 -0
- data/ext/schemurai_native/src/tracking.rs +244 -174
- data/lib/schemurai/container_checks/array_diagnostics.rb +119 -0
- data/lib/schemurai/container_checks/object_diagnostics.rb +152 -0
- data/lib/schemurai/container_checks.rb +534 -0
- data/lib/schemurai/decimal.rb +11 -0
- data/lib/schemurai/dialect.rb +0 -12
- data/lib/schemurai/ecma_regexp.rb +46 -0
- data/lib/schemurai/evaluation_pool.rb +66 -0
- data/lib/schemurai/evaluator.rb +9 -48
- data/lib/schemurai/json_pointer.rb +11 -0
- data/lib/schemurai/native/diagnostics.rb +4 -3
- data/lib/schemurai/native/evaluator.rb +38 -10
- data/lib/schemurai/native/null_numeric.rb +23 -0
- data/lib/schemurai/number_checks.rb +128 -0
- data/lib/schemurai/string_checks.rb +166 -0
- data/lib/schemurai/type_checks.rb +59 -0
- data/lib/schemurai/value_equality.rb +72 -0
- data/lib/schemurai/version.rb +1 -1
- data/lib/schemurai/vm/compiler.rb +18 -26
- data/lib/schemurai/vm/evaluator.rb +87 -545
- data/lib/schemurai/vm/limited_evaluator.rb +7 -22
- metadata +24 -2
|
@@ -8,6 +8,9 @@ module Schemurai
|
|
|
8
8
|
module VM
|
|
9
9
|
# VM execution with invocation-local limits; no Ruby evaluator delegation.
|
|
10
10
|
class LimitedEvaluator < Evaluator
|
|
11
|
+
include Internal::ValueEquality::Checkpoints
|
|
12
|
+
include Internal::StringChecks::TimedRegexps
|
|
13
|
+
|
|
11
14
|
def validate(instance, max_errors: nil, timeout: nil, budget: nil)
|
|
12
15
|
@budget = budget || Internal::LimitBudget.new(max_errors: max_errors, timeout: timeout)
|
|
13
16
|
result = super(instance)
|
|
@@ -55,18 +58,10 @@ module Schemurai
|
|
|
55
58
|
result
|
|
56
59
|
end
|
|
57
60
|
|
|
58
|
-
private def
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
result
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
private def ecma_regexp(pattern)
|
|
66
|
-
@budget.check_deadline!
|
|
67
|
-
result = super
|
|
68
|
-
@budget.check_deadline!
|
|
69
|
-
result
|
|
61
|
+
private def number_state
|
|
62
|
+
state = super
|
|
63
|
+
state.budget = @budget
|
|
64
|
+
state
|
|
70
65
|
end
|
|
71
66
|
|
|
72
67
|
private def valid_content?(schema, value)
|
|
@@ -82,16 +77,6 @@ module Schemurai
|
|
|
82
77
|
@budget.check_deadline!
|
|
83
78
|
result
|
|
84
79
|
end
|
|
85
|
-
|
|
86
|
-
private def json_equal?(left, right)
|
|
87
|
-
@budget.checkpoint
|
|
88
|
-
super
|
|
89
|
-
end
|
|
90
|
-
|
|
91
|
-
private def json_fingerprint(value)
|
|
92
|
-
@budget.checkpoint
|
|
93
|
-
super
|
|
94
|
-
end
|
|
95
80
|
end
|
|
96
81
|
end
|
|
97
82
|
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: schemurai
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.0.
|
|
4
|
+
version: 3.0.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Kuya KOHARA (oakcask)
|
|
@@ -44,8 +44,11 @@ files:
|
|
|
44
44
|
- ext/schemurai_native/protocol.def
|
|
45
45
|
- ext/schemurai_native/protocol.h
|
|
46
46
|
- ext/schemurai_native/src/budget.rs
|
|
47
|
+
- ext/schemurai_native/src/container.rs
|
|
47
48
|
- ext/schemurai_native/src/content.rs
|
|
48
49
|
- ext/schemurai_native/src/diagnostics.rs
|
|
50
|
+
- ext/schemurai_native/src/diagnostics/array.rs
|
|
51
|
+
- ext/schemurai_native/src/diagnostics/object.rs
|
|
49
52
|
- ext/schemurai_native/src/enumeration.rs
|
|
50
53
|
- ext/schemurai_native/src/evaluation.rs
|
|
51
54
|
- ext/schemurai_native/src/format.rs
|
|
@@ -56,21 +59,35 @@ files:
|
|
|
56
59
|
- ext/schemurai_native/src/memo.rs
|
|
57
60
|
- ext/schemurai_native/src/memo_scope.rs
|
|
58
61
|
- ext/schemurai_native/src/number.rs
|
|
62
|
+
- ext/schemurai_native/src/number/arbitrary.rs
|
|
59
63
|
- ext/schemurai_native/src/pattern.rs
|
|
64
|
+
- ext/schemurai_native/src/pointer.rs
|
|
65
|
+
- ext/schemurai_native/src/runtime.rs
|
|
66
|
+
- ext/schemurai_native/src/runtime/properties.rs
|
|
67
|
+
- ext/schemurai_native/src/runtime/reports.rs
|
|
68
|
+
- ext/schemurai_native/src/runtime/scopes.rs
|
|
60
69
|
- ext/schemurai_native/src/scope.rs
|
|
70
|
+
- ext/schemurai_native/src/string.rs
|
|
61
71
|
- ext/schemurai_native/src/structural.rs
|
|
62
72
|
- ext/schemurai_native/src/tracking.rs
|
|
63
73
|
- lib/schemurai.rb
|
|
64
74
|
- lib/schemurai/backend.rb
|
|
75
|
+
- lib/schemurai/container_checks.rb
|
|
76
|
+
- lib/schemurai/container_checks/array_diagnostics.rb
|
|
77
|
+
- lib/schemurai/container_checks/object_diagnostics.rb
|
|
78
|
+
- lib/schemurai/decimal.rb
|
|
65
79
|
- lib/schemurai/dialect.rb
|
|
66
80
|
- lib/schemurai/dialect_keywords.rb
|
|
67
81
|
- lib/schemurai/dialects/draft2019_09.rb
|
|
68
82
|
- lib/schemurai/dialects/draft2020_12.rb
|
|
69
83
|
- lib/schemurai/dialects/draft7.rb
|
|
84
|
+
- lib/schemurai/ecma_regexp.rb
|
|
70
85
|
- lib/schemurai/error_message.rb
|
|
71
86
|
- lib/schemurai/evaluation.rb
|
|
87
|
+
- lib/schemurai/evaluation_pool.rb
|
|
72
88
|
- lib/schemurai/evaluator.rb
|
|
73
89
|
- lib/schemurai/formats.rb
|
|
90
|
+
- lib/schemurai/json_pointer.rb
|
|
74
91
|
- lib/schemurai/limit_budget.rb
|
|
75
92
|
- lib/schemurai/limit_exceeded.rb
|
|
76
93
|
- lib/schemurai/limited_evaluator.rb
|
|
@@ -80,10 +97,15 @@ files:
|
|
|
80
97
|
- lib/schemurai/meta_schemas/draft7.rb
|
|
81
98
|
- lib/schemurai/native/diagnostics.rb
|
|
82
99
|
- lib/schemurai/native/evaluator.rb
|
|
100
|
+
- lib/schemurai/native/null_numeric.rb
|
|
101
|
+
- lib/schemurai/number_checks.rb
|
|
83
102
|
- lib/schemurai/schema_domain.rb
|
|
84
103
|
- lib/schemurai/schema_graph.rb
|
|
85
104
|
- lib/schemurai/schema_node.rb
|
|
105
|
+
- lib/schemurai/string_checks.rb
|
|
106
|
+
- lib/schemurai/type_checks.rb
|
|
86
107
|
- lib/schemurai/unique_items.rb
|
|
108
|
+
- lib/schemurai/value_equality.rb
|
|
87
109
|
- lib/schemurai/version.rb
|
|
88
110
|
- lib/schemurai/vm/compiler.rb
|
|
89
111
|
- lib/schemurai/vm/evaluator.rb
|
|
@@ -95,7 +117,7 @@ licenses:
|
|
|
95
117
|
metadata:
|
|
96
118
|
homepage_uri: https://github.com/oakcask/schemurai
|
|
97
119
|
source_code_uri: https://github.com/oakcask/schemurai/tree/main
|
|
98
|
-
documentation_uri: https://rubydoc.info/gems/schemurai/3.0.
|
|
120
|
+
documentation_uri: https://rubydoc.info/gems/schemurai/3.0.2
|
|
99
121
|
rubygems_mfa_required: 'true'
|
|
100
122
|
rdoc_options:
|
|
101
123
|
- "--main"
|