datacaster 3.2.1 → 3.2.3
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:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: f2b45e5271b85a571b86bd83ff91494d68486b677a2f0cc0f03daeeb5e8d5307
         | 
| 4 | 
            +
              data.tar.gz: 7dafa54ec77eee489282217026a845059725a164e381525be695874bbb2cecc3
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: 37337520c11d06b98d30e5afcb890b2a8b1bfdbc06f05d070fb8d3c3dc52c4adc9263a9f92a29c0cf92051f5b58c57833f9d1330a8f7cb7fe39a46c2fad694f9
         | 
| 7 | 
            +
              data.tar.gz: 4792f1c3000d5df28c865e5c8c365a87356e8241009b9a7cbe5e55544422c964749ba43e8d6004aba05585a18e1795967dc6c3a22f2e06a03ef87eca0dd4fced
         | 
| @@ -24,8 +24,9 @@ module Datacaster | |
| 24 24 | 
             
                  def transform_result(result)
         | 
| 25 25 | 
             
                    return result unless result.valid?
         | 
| 26 26 | 
             
                    result = cast_success(result)
         | 
| 27 | 
            -
                     | 
| 28 | 
            -
             | 
| 27 | 
            +
                    parent_runtime = @runtime.instance_variable_get(:@parent)
         | 
| 28 | 
            +
                    if parent_runtime.respond_to?(:checked_schema!)
         | 
| 29 | 
            +
                      parent_runtime.checked_schema!(@runtime.checked_schema)
         | 
| 29 30 | 
             
                    end
         | 
| 30 31 | 
             
                    result
         | 
| 31 32 | 
             
                  end
         | 
| @@ -1,11 +1,15 @@ | |
| 1 1 | 
             
            module Datacaster
         | 
| 2 2 | 
             
              class SwitchNode < Base
         | 
| 3 | 
            -
                def initialize(base = nil, on_casters  | 
| 3 | 
            +
                def initialize(base = nil, on_casters: [], else_caster: nil, pick_key: nil)
         | 
| 4 4 | 
             
                  @base = base
         | 
| 5 | 
            +
                  @pick_key = pick_key
         | 
| 5 6 |  | 
| 6 7 | 
             
                  if Datacaster::Utils.pickable?(@base)
         | 
| 7 | 
            -
                    @ | 
| 8 | 
            -
                       | 
| 8 | 
            +
                    unless @pick_key.nil?
         | 
| 9 | 
            +
                      raise RuntimeError, "pick_key expected to be nil because #{@base.inspect} is pickable"
         | 
| 10 | 
            +
                    end
         | 
| 11 | 
            +
                    @pick_key = base
         | 
| 12 | 
            +
                    @base = Datacaster::Predefined.pick(base)
         | 
| 9 13 | 
             
                  end
         | 
| 10 14 |  | 
| 11 15 | 
             
                  if !@base.nil? && !Datacaster.instance?(@base)
         | 
| @@ -34,12 +38,12 @@ module Datacaster | |
| 34 38 |  | 
| 35 39 | 
             
                  clause = DefinitionDSL.expand(clause)
         | 
| 36 40 |  | 
| 37 | 
            -
                  self.class.new(@base, @ons + [[caster, clause]], @else)
         | 
| 41 | 
            +
                  self.class.new(@base, on_casters: @ons + [[caster, clause]], else_caster: @else, pick_key: @pick_key)
         | 
| 38 42 | 
             
                end
         | 
| 39 43 |  | 
| 40 44 | 
             
                def else(else_caster)
         | 
| 41 45 | 
             
                  raise ArgumentError, "Datacaster: double else clause is not permitted", caller if @else
         | 
| 42 | 
            -
                  self.class.new(@base, @ons, else_caster)
         | 
| 46 | 
            +
                  self.class.new(@base, on_casters: @ons, else_caster: else_caster, pick_key: @pick_key)
         | 
| 43 47 | 
             
                end
         | 
| 44 48 |  | 
| 45 49 | 
             
                def cast(object, runtime:)
         | 
| @@ -59,7 +63,11 @@ module Datacaster | |
| 59 63 | 
             
                    result = check.with_runtime(runtime).(switch_result)
         | 
| 60 64 | 
             
                    next unless result.valid?
         | 
| 61 65 |  | 
| 62 | 
            -
                     | 
| 66 | 
            +
                    if @pick_key.nil?
         | 
| 67 | 
            +
                      return clause.with_runtime(runtime).(object)
         | 
| 68 | 
            +
                    else
         | 
| 69 | 
            +
                      return runtime.checked_key!(@pick_key) { clause.with_runtime(runtime).(object) }
         | 
| 70 | 
            +
                    end
         | 
| 63 71 | 
             
                  end
         | 
| 64 72 |  | 
| 65 73 | 
             
                  # all 'on'-s have failed
         | 
| @@ -71,7 +79,7 @@ module Datacaster | |
| 71 79 | 
             
                end
         | 
| 72 80 |  | 
| 73 81 | 
             
                def inspect
         | 
| 74 | 
            -
                  "#<Datacaster::SwitchNode base: #{@base.inspect} on: #{@ons.inspect} else: #{@else.inspect}>"
         | 
| 82 | 
            +
                  "#<Datacaster::SwitchNode base: #{@base.inspect} on: #{@ons.inspect} else: #{@else.inspect} pick_key: #{@pick_key.inspect}>"
         | 
| 75 83 | 
             
                end
         | 
| 76 84 | 
             
              end
         | 
| 77 85 | 
             
            end
         | 
    
        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: 3.2. | 
| 4 | 
            +
              version: 3.2.3
         | 
| 5 5 | 
             
            platform: ruby
         | 
| 6 6 | 
             
            authors:
         | 
| 7 7 | 
             
            - Eugene Zolotarev
         | 
| 8 | 
            -
            autorequire:
         | 
| 8 | 
            +
            autorequire: 
         | 
| 9 9 | 
             
            bindir: exe
         | 
| 10 10 | 
             
            cert_chain: []
         | 
| 11 | 
            -
            date:  | 
| 11 | 
            +
            date: 2024-02-06 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: activemodel
         | 
| @@ -106,7 +106,7 @@ dependencies: | |
| 106 106 | 
             
                - - "<"
         | 
| 107 107 | 
             
                  - !ruby/object:Gem::Version
         | 
| 108 108 | 
             
                    version: '3'
         | 
| 109 | 
            -
            description:
         | 
| 109 | 
            +
            description: 
         | 
| 110 110 | 
             
            email:
         | 
| 111 111 | 
             
            - eugzol@gmail.com
         | 
| 112 112 | 
             
            executables: []
         | 
| @@ -178,7 +178,7 @@ licenses: | |
| 178 178 | 
             
            - MIT
         | 
| 179 179 | 
             
            metadata:
         | 
| 180 180 | 
             
              source_code_uri: https://github.com/EugZol/datacaster
         | 
| 181 | 
            -
            post_install_message:
         | 
| 181 | 
            +
            post_install_message: 
         | 
| 182 182 | 
             
            rdoc_options: []
         | 
| 183 183 | 
             
            require_paths:
         | 
| 184 184 | 
             
            - lib
         | 
| @@ -193,8 +193,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement | |
| 193 193 | 
             
                - !ruby/object:Gem::Version
         | 
| 194 194 | 
             
                  version: '0'
         | 
| 195 195 | 
             
            requirements: []
         | 
| 196 | 
            -
            rubygems_version: 3. | 
| 197 | 
            -
            signing_key:
         | 
| 196 | 
            +
            rubygems_version: 3.1.6
         | 
| 197 | 
            +
            signing_key: 
         | 
| 198 198 | 
             
            specification_version: 4
         | 
| 199 199 | 
             
            summary: Run-time type checker and transformer for Ruby
         | 
| 200 200 | 
             
            test_files: []
         |