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
         |