datacaster 3.2.2 → 3.2.4

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: dd23c11d4adffee6cbdc30b7a74f2f8d6964b4ebcdb0fd2e94576f28c4fc7407
4
- data.tar.gz: '0949319f7e070757a51c619cf2e77d355df177ba84f010835a517243d2ad76ec'
3
+ metadata.gz: 382b6c6e5194c6746baaef5483ef078a06f0494c1c41798e118bf9b63d554436
4
+ data.tar.gz: 1cc94cf3dbe08b9e660bb0e0a164eaf15567408239fa7b8f84f5353256b6c8b7
5
5
  SHA512:
6
- metadata.gz: 3c0edbe35ee2b7b8a0f450df81defbb89371b09ad3f18fd72e55a1b9f7e143d765c9cbe72ca1ab8ce84e25c822dec289e20cdddca2c36044551f0c27f577cc2d
7
- data.tar.gz: 7cea5130149612f5b73e58d426ec28bf34322c57cef08fb601c83537aaeda1769a91c58ca91641cb964883d32fb8c737e68856633646f6c2ec7b792079dc39e8
6
+ metadata.gz: a4fc369a63f0a2787d7b7a2706f68cf08a0181771c5c84acb3fa6d60e0f1e2fe2ca097ba611825bfd6e75f344dbf301254d90367cf6ece61264ea29c8b336ea2
7
+ data.tar.gz: caed96fc02c8020c951f053fa2a71852623ff8a45ac9ce91235c34d999b2cebd4eb3533bfdbc090aa561f4346bd596b940bcbd169ea81e47f4756430b87e6ede
@@ -47,7 +47,8 @@ module Datacaster
47
47
  when Hash
48
48
  cast_hash(result, schema)
49
49
  else
50
- raise "Expected hash or array when checking #{value.inspect}"
50
+ raise RuntimeError, "Expected hash or array inside result when checking #{result.inspect} " \
51
+ "(schema is #{schema.inspect})", caller
51
52
  end
52
53
  end
53
54
 
@@ -1,11 +1,15 @@
1
1
  module Datacaster
2
2
  class SwitchNode < Base
3
- def initialize(base = nil, on_casters = [], else_caster = nil)
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
- @base = Datacaster::Predefined.run { checked_key!(base) } &
8
- Datacaster::Predefined.pick(base)
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,6 +63,7 @@ module Datacaster
59
63
  result = check.with_runtime(runtime).(switch_result)
60
64
  next unless result.valid?
61
65
 
66
+ runtime.checked_key!(@pick_key) if !@pick_key.nil? && !@pick_key.is_a?(Array)
62
67
  return clause.with_runtime(runtime).(object)
63
68
  end
64
69
 
@@ -71,7 +76,7 @@ module Datacaster
71
76
  end
72
77
 
73
78
  def inspect
74
- "#<Datacaster::SwitchNode base: #{@base.inspect} on: #{@ons.inspect} else: #{@else.inspect}>"
79
+ "#<Datacaster::SwitchNode base: #{@base.inspect} on: #{@ons.inspect} else: #{@else.inspect} pick_key: #{@pick_key.inspect}>"
75
80
  end
76
81
  end
77
82
  end
@@ -1,3 +1,3 @@
1
1
  module Datacaster
2
- VERSION = "3.2.2"
2
+ VERSION = "3.2.4"
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: 3.2.2
4
+ version: 3.2.4
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: 2023-10-09 00:00:00.000000000 Z
11
+ date: 2024-02-07 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.4.6
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: []