datacaster 4.0.1 → 4.1.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 +12 -0
- data/lib/datacaster/runtimes/user_context.rb +11 -4
- data/lib/datacaster/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1cbcb054db89c228c0c38e19a2af1a3863a1835708dd9717a9f3d5c0b3f27286
|
4
|
+
data.tar.gz: 79aa8db52e0cb760b1fd6e8b49bf77b7853b7fae192f2a746d4a9205bc3c1b14
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f5a325a3bd5534b69024488ea015d05e5c1e12970df5c07a2eeb26c34a0c8be48bbc2f2c98971f1ba4653231c7740d06cf38359c628ee030e4d8423cafebb278
|
7
|
+
data.tar.gz: aa0b7b42f0ecd22f9d4d9865e0c2c95602a990585550f5579c2b466f2a9bde4d6814adf0faeffe08d0e9e391d79c27519a1e5647a9fb0f9370276f72c8e461d2
|
data/README.md
CHANGED
@@ -1547,6 +1547,18 @@ schema.with_context(five: 15).(nil)
|
|
1547
1547
|
# => Datacaster::ValidResult(nil)
|
1548
1548
|
```
|
1549
1549
|
|
1550
|
+
Method `has_key?` could be used to determine whether key is available in the context
|
1551
|
+
|
1552
|
+
```ruby
|
1553
|
+
schema =
|
1554
|
+
Datacaster.schema do
|
1555
|
+
check { context.has_key?(:five) }
|
1556
|
+
end
|
1557
|
+
|
1558
|
+
schema.with_context(five: 15).(nil)
|
1559
|
+
# => Datacaster::ValidResult(nil)
|
1560
|
+
```
|
1561
|
+
|
1550
1562
|
**Note**
|
1551
1563
|
|
1552
1564
|
`context` can be accesed only in casters' blocks. It can't be used in schema definition itself:
|
@@ -4,6 +4,10 @@ module Datacaster
|
|
4
4
|
module Runtimes
|
5
5
|
class UserContext < Base
|
6
6
|
class ContextStruct
|
7
|
+
def self.context_has_key?(context, key)
|
8
|
+
context.respond_to?(:key?) && context.key?(key) || context.to_h.key?(key.to_sym)
|
9
|
+
end
|
10
|
+
|
7
11
|
def initialize(context, node)
|
8
12
|
@context = context
|
9
13
|
@node = node
|
@@ -14,10 +18,7 @@ module Datacaster
|
|
14
18
|
return super
|
15
19
|
end
|
16
20
|
|
17
|
-
|
18
|
-
@context.to_h.key?(m.to_sym)
|
19
|
-
|
20
|
-
if key_present && args.empty?
|
21
|
+
if self.class.context_has_key?(@context, m) && args.empty?
|
21
22
|
return @context[m]
|
22
23
|
end
|
23
24
|
|
@@ -31,6 +32,12 @@ module Datacaster
|
|
31
32
|
raise NoMethodError.new("Key #{m.inspect} is not found in the context")
|
32
33
|
end
|
33
34
|
end
|
35
|
+
|
36
|
+
def has_key?(key)
|
37
|
+
self.class.context_has_key?(@context, key) || @node.class.send_to_parent(@node, :context).has_key?(key)
|
38
|
+
rescue NoMethodError
|
39
|
+
false
|
40
|
+
end
|
34
41
|
end
|
35
42
|
|
36
43
|
def initialize(parent, user_context)
|
data/lib/datacaster/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: datacaster
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0
|
4
|
+
version: 4.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eugene Zolotarev
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-10-
|
11
|
+
date: 2024-10-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|
@@ -193,7 +193,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
193
193
|
- !ruby/object:Gem::Version
|
194
194
|
version: '0'
|
195
195
|
requirements: []
|
196
|
-
rubygems_version: 3.
|
196
|
+
rubygems_version: 3.1.6
|
197
197
|
signing_key:
|
198
198
|
specification_version: 4
|
199
199
|
summary: Run-time type checker and transformer for Ruby
|