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.
Files changed (52) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +6 -4
  3. data/ext/schemurai_native/Cargo.lock +48 -1
  4. data/ext/schemurai_native/Cargo.toml +3 -1
  5. data/ext/schemurai_native/extconf.rb +1 -1
  6. data/ext/schemurai_native/glue.c +1679 -62
  7. data/ext/schemurai_native/protocol.def +45 -0
  8. data/ext/schemurai_native/src/budget.rs +49 -0
  9. data/ext/schemurai_native/src/container.rs +460 -0
  10. data/ext/schemurai_native/src/content.rs +56 -27
  11. data/ext/schemurai_native/src/diagnostics/array.rs +392 -0
  12. data/ext/schemurai_native/src/diagnostics/object.rs +218 -0
  13. data/ext/schemurai_native/src/diagnostics.rs +1087 -307
  14. data/ext/schemurai_native/src/enumeration.rs +6 -1
  15. data/ext/schemurai_native/src/evaluation.rs +49 -20
  16. data/ext/schemurai_native/src/format.rs +8 -6
  17. data/ext/schemurai_native/src/graph.rs +37 -0
  18. data/ext/schemurai_native/src/instance_graph.rs +90 -0
  19. data/ext/schemurai_native/src/lib.rs +910 -237
  20. data/ext/schemurai_native/src/memo.rs +11 -38
  21. data/ext/schemurai_native/src/number/arbitrary.rs +154 -0
  22. data/ext/schemurai_native/src/number.rs +250 -59
  23. data/ext/schemurai_native/src/pattern.rs +113 -101
  24. data/ext/schemurai_native/src/pointer.rs +97 -0
  25. data/ext/schemurai_native/src/runtime/properties.rs +162 -0
  26. data/ext/schemurai_native/src/runtime/reports.rs +266 -0
  27. data/ext/schemurai_native/src/runtime/scopes.rs +430 -0
  28. data/ext/schemurai_native/src/runtime.rs +1020 -0
  29. data/ext/schemurai_native/src/scope.rs +60 -16
  30. data/ext/schemurai_native/src/string.rs +68 -0
  31. data/ext/schemurai_native/src/tracking.rs +244 -174
  32. data/lib/schemurai/container_checks/array_diagnostics.rb +119 -0
  33. data/lib/schemurai/container_checks/object_diagnostics.rb +152 -0
  34. data/lib/schemurai/container_checks.rb +534 -0
  35. data/lib/schemurai/decimal.rb +11 -0
  36. data/lib/schemurai/dialect.rb +0 -12
  37. data/lib/schemurai/ecma_regexp.rb +46 -0
  38. data/lib/schemurai/evaluation_pool.rb +66 -0
  39. data/lib/schemurai/evaluator.rb +9 -48
  40. data/lib/schemurai/json_pointer.rb +11 -0
  41. data/lib/schemurai/native/diagnostics.rb +4 -3
  42. data/lib/schemurai/native/evaluator.rb +38 -10
  43. data/lib/schemurai/native/null_numeric.rb +23 -0
  44. data/lib/schemurai/number_checks.rb +128 -0
  45. data/lib/schemurai/string_checks.rb +166 -0
  46. data/lib/schemurai/type_checks.rb +59 -0
  47. data/lib/schemurai/value_equality.rb +72 -0
  48. data/lib/schemurai/version.rb +1 -1
  49. data/lib/schemurai/vm/compiler.rb +18 -26
  50. data/lib/schemurai/vm/evaluator.rb +87 -545
  51. data/lib/schemurai/vm/limited_evaluator.rb +7 -22
  52. 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 decimal(value)
59
- @budget.check_deadline!
60
- result = super
61
- @budget.check_deadline!
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.1
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.1
120
+ documentation_uri: https://rubydoc.info/gems/schemurai/3.0.2
99
121
  rubygems_mfa_required: 'true'
100
122
  rdoc_options:
101
123
  - "--main"