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 +4 -4
- data/lib/datacaster/context_nodes/structure_cleaner.rb +2 -1
- data/lib/datacaster/switch_node.rb +11 -6
- data/lib/datacaster/version.rb +1 -1
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 382b6c6e5194c6746baaef5483ef078a06f0494c1c41798e118bf9b63d554436
|
4
|
+
data.tar.gz: 1cc94cf3dbe08b9e660bb0e0a164eaf15567408239fa7b8f84f5353256b6c8b7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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 #{
|
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
|
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,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
|
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.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:
|
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.
|
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: []
|