datacaster 3.1.3 → 3.1.5

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: d7cd7191206c373ab38c5516505bf38cbbdc76a7b7c433f976498accda34b054
4
- data.tar.gz: 0443edf8c8f494caeacfb55ba902cce19210a53cf9f726e8306f7e487de58fd8
3
+ metadata.gz: 29c3f6c825f2c2d9a664e370079cde58df4ce9685d34d8428fb29aa7b98c52f3
4
+ data.tar.gz: 7d90ad442a4bd32ae4526d403629676c3aec9566973486bacd6565e8cb3d7bbd
5
5
  SHA512:
6
- metadata.gz: 2f00d6cd8c2aae72cba3723dbea6b1c6cb9d760309e9fefa7897e5da691123459496348045849f47700f241df668e505120ba1d2e2f54c93a033e72b222dc3b9
7
- data.tar.gz: 15c5d76c7cc7a16be05890bec3bcf549c0a5d103e9ba8bb42e2743c834e874bc1296fa5daa3af4feff93107d5acd8db2bd3b2da103f1c29aca1a169b86883c24
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.
@@ -7,17 +7,14 @@ module Datacaster
7
7
  attr_accessor :i18n_module
8
8
 
9
9
  def add_predefined_caster(name, definition)
10
- caster =
11
- case definition
12
- when Proc
13
- Datacaster.partial_schema(&definition)
14
- when Base
15
- definition
16
- else
17
- raise ArgumentError.new("Expected Datacaster defintion lambda or Datacaster instance")
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, strategy: :fail)
57
+ ContextNodes::StructureCleaner.new(base, :fail)
58
58
  end
59
59
 
60
60
  def choosy_schema(base)
61
- ContextNodes::StructureCleaner.new(base, strategy: :remove)
61
+ ContextNodes::StructureCleaner.new(base, :remove)
62
62
  end
63
63
 
64
64
  def partial_schema(base)
65
- ContextNodes::StructureCleaner.new(base, strategy: :pass)
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
@@ -1,3 +1,3 @@
1
1
  module Datacaster
2
- VERSION = "3.1.3"
2
+ VERSION = "3.1.5"
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.1.3
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-06 00:00:00.000000000 Z
11
+ date: 2023-10-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel