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