datacaster 3.1.3 → 3.1.5
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 +1 -0
- data/lib/datacaster/config.rb +8 -11
- data/lib/datacaster/predefined.rb +3 -3
- data/lib/datacaster/switch_node.rb +8 -1
- data/lib/datacaster/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 29c3f6c825f2c2d9a664e370079cde58df4ce9685d34d8428fb29aa7b98c52f3
|
4
|
+
data.tar.gz: 7d90ad442a4bd32ae4526d403629676c3aec9566973486bacd6565e8cb3d7bbd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: acc11fefd17414ba1400bd98d2105b194301ac63f4d6b4204f001f918984326ab711c92d89133b475fd09d51b10c5d6427f6d6f516742a4ceb0a3eb2cf07f983
|
7
|
+
data.tar.gz: 07f288ab4e44e0b7a931aa43b34bac1a98d34d68f9d72241fc34f1648aeedc0412b51bdbe1113d9c34674a283e5fc6c559d4d2c5c385f5ec55c65d3b8345fb73
|
data/README.md
CHANGED
@@ -415,6 +415,7 @@ Notice that shortcut definitions are available (illustrated in the example above
|
|
415
415
|
|
416
416
|
* `switch(:key)` is exactly the same as `switch(pick(:key))` (works for a string, a symbol, or an array thereof)
|
417
417
|
* `on(:key, ...)` is exactly the same as `on(compare(:key), ...)` (works for a string or a symbol)
|
418
|
+
* `on(:key, ...)` will match on `:key` and `'key'` value, and the same is true for `on('key', ...)` (to disable that behavior provide `strict: true` keyword arg: `on('key', ..., strict: true)`)
|
418
419
|
* `switch([caster], on_check => on_caster, ...)` is exactly the same as `switch([caster]).on(on_check, on_caster).on(...)`
|
419
420
|
|
420
421
|
`switch()` without a `base` argument will pass the incoming value to the `.on(...)` casters.
|
data/lib/datacaster/config.rb
CHANGED
@@ -7,17 +7,14 @@ module Datacaster
|
|
7
7
|
attr_accessor :i18n_module
|
8
8
|
|
9
9
|
def add_predefined_caster(name, definition)
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
end
|
19
|
-
|
20
|
-
Predefined.define_method(name.to_sym) { caster }
|
10
|
+
case definition
|
11
|
+
when Proc
|
12
|
+
Predefined.define_method(name.to_sym, &definition)
|
13
|
+
when Base
|
14
|
+
Predefined.define_method(name.to_sym) { definition }
|
15
|
+
else
|
16
|
+
raise ArgumentError.new("Expected Datacaster defintion lambda or Datacaster instance")
|
17
|
+
end
|
21
18
|
end
|
22
19
|
|
23
20
|
def i18n_t
|
@@ -54,15 +54,15 @@ module Datacaster
|
|
54
54
|
end
|
55
55
|
|
56
56
|
def schema(base)
|
57
|
-
ContextNodes::StructureCleaner.new(base,
|
57
|
+
ContextNodes::StructureCleaner.new(base, :fail)
|
58
58
|
end
|
59
59
|
|
60
60
|
def choosy_schema(base)
|
61
|
-
ContextNodes::StructureCleaner.new(base,
|
61
|
+
ContextNodes::StructureCleaner.new(base, :remove)
|
62
62
|
end
|
63
63
|
|
64
64
|
def partial_schema(base)
|
65
|
-
ContextNodes::StructureCleaner.new(base,
|
65
|
+
ContextNodes::StructureCleaner.new(base, :pass)
|
66
66
|
end
|
67
67
|
|
68
68
|
# 'Meta' types
|
@@ -16,11 +16,18 @@ module Datacaster
|
|
16
16
|
@else = else_caster
|
17
17
|
end
|
18
18
|
|
19
|
-
def on(caster_or_value, clause)
|
19
|
+
def on(caster_or_value, clause, strict: false)
|
20
20
|
caster =
|
21
21
|
case caster_or_value
|
22
22
|
when Datacaster::Base
|
23
23
|
caster_or_value
|
24
|
+
when String, Symbol
|
25
|
+
if strict
|
26
|
+
Datacaster::Predefined.compare(caster_or_value)
|
27
|
+
else
|
28
|
+
Datacaster::Predefined.compare(caster_or_value.to_s) |
|
29
|
+
Datacaster::Predefined.compare(caster_or_value.to_sym)
|
30
|
+
end
|
24
31
|
else
|
25
32
|
Datacaster::Predefined.compare(caster_or_value)
|
26
33
|
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.1.
|
4
|
+
version: 3.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eugene Zolotarev
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-10-
|
11
|
+
date: 2023-10-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activemodel
|