nxt_schema 0.1.0 → 0.1.1
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/Gemfile.lock +6 -6
- data/README.md +13 -1
- data/lib/nxt_schema/error_messages/en.yaml +3 -2
- data/lib/nxt_schema/node/base.rb +4 -6
- data/lib/nxt_schema/node/collection.rb +5 -1
- data/lib/nxt_schema/version.rb +1 -1
- data/lib/nxt_schema.rb +0 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cad6184f1a5fa47bc5991c5b6b31885d2afc9878e45b1e07a66752f3c7083c73
|
4
|
+
data.tar.gz: 8ad13387193ae20005ace29aae75f62ffe251ceaf43209abd85c2b8df6d832eb
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5e2d1ba3e0543713e04ba8432b55482fb8e73684b6bcc7b5040e7a9b2d24ddbd07b512bb9fecd0aa2e543da924de4e13195325a72c5b84bab93b540aa5a590b6
|
7
|
+
data.tar.gz: 85f3476e6de7ae21ae578f0c3ac0c6f40b367016d092937d0d107f97a0580e2caaf9b1500d2f11a522597633cfc56b42f427964e8326744abafdf77f18b8a5d4
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
nxt_schema (0.1.
|
4
|
+
nxt_schema (0.1.1)
|
5
5
|
activesupport
|
6
6
|
dry-types
|
7
7
|
nxt_registry
|
@@ -9,7 +9,7 @@ PATH
|
|
9
9
|
GEM
|
10
10
|
remote: https://rubygems.org/
|
11
11
|
specs:
|
12
|
-
activesupport (6.0.2.
|
12
|
+
activesupport (6.0.2.2)
|
13
13
|
concurrent-ruby (~> 1.0, >= 1.0.2)
|
14
14
|
i18n (>= 0.7, < 2)
|
15
15
|
minitest (~> 5.1)
|
@@ -18,7 +18,7 @@ GEM
|
|
18
18
|
coderay (1.1.2)
|
19
19
|
concurrent-ruby (1.1.6)
|
20
20
|
diff-lcs (1.3)
|
21
|
-
dry-configurable (0.11.
|
21
|
+
dry-configurable (0.11.5)
|
22
22
|
concurrent-ruby (~> 1.0)
|
23
23
|
dry-core (~> 0.4, >= 0.4.7)
|
24
24
|
dry-equalizer (~> 0.2)
|
@@ -33,7 +33,7 @@ GEM
|
|
33
33
|
concurrent-ruby (~> 1.0)
|
34
34
|
dry-core (~> 0.2)
|
35
35
|
dry-equalizer (~> 0.2)
|
36
|
-
dry-types (1.
|
36
|
+
dry-types (1.4.0)
|
37
37
|
concurrent-ruby (~> 1.0)
|
38
38
|
dry-container (~> 0.3)
|
39
39
|
dry-core (~> 0.4, >= 0.4.4)
|
@@ -47,7 +47,7 @@ GEM
|
|
47
47
|
hirb (>= 0.6.0)
|
48
48
|
method_source (0.9.2)
|
49
49
|
minitest (5.14.0)
|
50
|
-
nxt_registry (0.1.
|
50
|
+
nxt_registry (0.1.5)
|
51
51
|
activesupport
|
52
52
|
pry (0.12.2)
|
53
53
|
coderay (~> 1.1.0)
|
@@ -69,7 +69,7 @@ GEM
|
|
69
69
|
thread_safe (0.3.6)
|
70
70
|
tzinfo (1.2.6)
|
71
71
|
thread_safe (~> 0.1)
|
72
|
-
zeitwerk (2.
|
72
|
+
zeitwerk (2.3.0)
|
73
73
|
|
74
74
|
PLATFORMS
|
75
75
|
ruby
|
data/README.md
CHANGED
@@ -29,6 +29,13 @@ schema = NxtSchema.root(:company) do
|
|
29
29
|
requires(:street, :String)
|
30
30
|
requires(:street_number, :Integer)
|
31
31
|
end
|
32
|
+
|
33
|
+
# Use nodes to create an array of typed nodes
|
34
|
+
# The following simple means an array of strings
|
35
|
+
nodes(:products) do
|
36
|
+
node(:product, :String)
|
37
|
+
end
|
38
|
+
|
32
39
|
|
33
40
|
nodes(:employees) do
|
34
41
|
hash(:employee) do
|
@@ -367,8 +374,13 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/[USERN
|
|
367
374
|
|
368
375
|
The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
|
369
376
|
|
370
|
-
|
377
|
+
### TODO:
|
371
378
|
|
379
|
+
- Conditionally required keys:
|
380
|
+
required bool => required
|
381
|
+
required conditionally => condition applies => required
|
382
|
+
required conditionally => condition does not apply => not allowed
|
383
|
+
|
372
384
|
- Explain the difference between array nodes and typed array nodes
|
373
385
|
- Should we translate coercion errors as well?
|
374
386
|
- Test the different scenarios of merging schemas array, hash, ...
|
@@ -1,6 +1,6 @@
|
|
1
1
|
en:
|
2
|
-
required_key_missing: "Required key :%{key} is missing
|
3
|
-
additional_keys_detected: "Additional keys %{keys} not allowed
|
2
|
+
required_key_missing: "Required key :%{key} is missing"
|
3
|
+
additional_keys_detected: "Additional keys %{keys} not allowed"
|
4
4
|
attribute: "%{attribute} has invalid %{attribute_name} attribute of %{value}"
|
5
5
|
equality: "%{actual} does not equal %{expected}"
|
6
6
|
excludes: "%{value} cannot contain %{target}"
|
@@ -13,3 +13,4 @@ en:
|
|
13
13
|
less_than_or_equal: "%{value} must be less than or equal to %{threshold}"
|
14
14
|
pattern: "%{value} must match pattern %{pattern}"
|
15
15
|
query: "%{value}.%{query} was %{actual} and must be true"
|
16
|
+
emptiness: "%{value} cannot not be empty"
|
data/lib/nxt_schema/node/base.rb
CHANGED
@@ -84,19 +84,17 @@ module NxtSchema
|
|
84
84
|
self
|
85
85
|
end
|
86
86
|
|
87
|
-
def optional(optional_value, &block)
|
87
|
+
def optional(optional_value = nil, &block)
|
88
88
|
raise ArgumentError, 'Optional nodes can only exist within schemas' unless parent.is_a?(NxtSchema::Node::Schema)
|
89
89
|
|
90
|
-
options.merge!(optional: optional_value)
|
91
|
-
evaluate_block(block) if block_given?
|
90
|
+
options.merge!(optional: optional_value || block)
|
92
91
|
self
|
93
92
|
end
|
94
93
|
|
95
|
-
def presence(presence_value, &block)
|
94
|
+
def presence(presence_value = nil, &block)
|
96
95
|
raise ArgumentError, 'Present nodes can only exist within schemas' unless parent.is_a?(NxtSchema::Node::Schema)
|
97
96
|
|
98
|
-
options.merge!(presence: presence_value)
|
99
|
-
evaluate_block(block) if block_given?
|
97
|
+
options.merge!(presence: presence_value || block)
|
100
98
|
self
|
101
99
|
end
|
102
100
|
|
@@ -26,6 +26,11 @@ module NxtSchema
|
|
26
26
|
|
27
27
|
current_node_store = {}
|
28
28
|
|
29
|
+
# if value.empty?
|
30
|
+
# message = ErrorMessages.resolve(locale, :emptiness, value: value)
|
31
|
+
# add_error(message)
|
32
|
+
# end
|
33
|
+
|
29
34
|
value.each_with_index do |item, index|
|
30
35
|
item_schema_errors = schema_errors[index] ||= { schema_errors_key => [] }
|
31
36
|
validation_errors[index] ||= { schema_errors_key => [] }
|
@@ -36,7 +41,6 @@ module NxtSchema
|
|
36
41
|
current_node.apply(item, parent_node: self, context: context)
|
37
42
|
value_store[index] = current_node.value
|
38
43
|
|
39
|
-
# TODO: Extract method here
|
40
44
|
unless current_node.schema_errors?
|
41
45
|
current_node_store.each do |node_name, node|
|
42
46
|
node.schema_errors = { }
|
data/lib/nxt_schema/version.rb
CHANGED
data/lib/nxt_schema.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: nxt_schema
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andreas Robecke
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-04-01 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|