nxt_schema 0.1.0 → 0.1.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
|