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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9709949f8f91c24538332b215d2d08af58a7b1e83869dcde0198512889b1775c
4
- data.tar.gz: 791d875d336e229796f302b448256b6b4ad1a3d6f10e10702af49a3cbb6faf4e
3
+ metadata.gz: 1cbcb054db89c228c0c38e19a2af1a3863a1835708dd9717a9f3d5c0b3f27286
4
+ data.tar.gz: 79aa8db52e0cb760b1fd6e8b49bf77b7853b7fae192f2a746d4a9205bc3c1b14
5
5
  SHA512:
6
- metadata.gz: 7631f63485017a7c431993b80ecb9795c060e02c8742a2cf82400866b578e244caa9d2e783769cf7b3d153336d8242790c68daf652c6d53fdbe94f387230a1bc
7
- data.tar.gz: 551810cf2025496263579b9b3bfd051970a5149a08bf51fd6ac7a4b6ad40fc74b8819fb3e941e7738a8e2e826f75ac5119759864ea740826e95ca3c30d9e316a
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
- key_present = @context.respond_to?(:key?) && @context.key?(m) ||
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)
@@ -1,3 +1,3 @@
1
1
  module Datacaster
2
- VERSION = "4.0.1"
2
+ VERSION = "4.1.0"
3
3
  end
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.1
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-08 00:00:00.000000000 Z
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.5.21
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