datacaster 3.2.8 → 3.3.1

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: 7e5f8dec00cd9987c6efe8bbf54939b6a4df8604cffb7bc2be43d3e97fc8c8b7
4
- data.tar.gz: a2bf2ab038537307304aade93ec9143fe489ece282ffb6d1bb92cdbe0d241de9
3
+ metadata.gz: 5864f7aa276d30db8a1c774847715f6167733719b1f5ea0364a1997732dbffeb
4
+ data.tar.gz: 546d45344a7c8acb31510c3a6dc99c275067041d3a06b5d705da6867714ac953
5
5
  SHA512:
6
- metadata.gz: 4a99eaac0cfdb79b651ea7056dd77e279768e0ad0123107fb26f211cfe5d0bd605b0bfd19b649ac6041ac8a527c1314b5202ba790c2dfbea5bd85363a06756a6
7
- data.tar.gz: d351457a3693f7a919fe0252cfc664973231c91c7b50dd2404beb4bfefa4d515541147272bafbf9fd53b109e6565f04fd4202adaa9fa347587422f0342b08be4
6
+ metadata.gz: 03a21b07500ea5fbae488b4e3664b635833a38b107d231a0cad67a89ff522a63ce6652ae24d9db9c2cf2229fd1709c40d49219691f255e1e0cf0635bd0015347
7
+ data.tar.gz: 59257ede6016d05f13a0f64ed3277131f18cd82b4e3cf17a6d97ee850593e7d111e3f195690a9581f9f13540d82d81713e71ae74bf0d8cc678215179fb43283c
@@ -6,7 +6,7 @@ jobs:
6
6
  runs-on: ubuntu-latest
7
7
  strategy:
8
8
  matrix:
9
- ruby-version: ['2.7', '3.0', '3.1']
9
+ ruby-version: ['3.1', '3.2', '3.3']
10
10
  steps:
11
11
  - uses: actions/checkout@v3
12
12
  - name: Set up Ruby
data/README.md CHANGED
@@ -595,6 +595,8 @@ login.("test")
595
595
 
596
596
  Always returns ValidResult.
597
597
 
598
+ Returned `default_value` is deeply frozen with [Ractor::make_shareable](https://docs.ruby-lang.org/en/master/Ractor.html#method-c-make_shareable) to prevent application bugs due to modification of unintentionally shared value. If that effect is undesired, use [`transform { value }`](#transform--value--) instead.
599
+
598
600
  Returns `default_value` in the following cases:
599
601
 
600
602
  * if the value is `Datacaster.absent` (`on` is disregarded in such case)
@@ -847,7 +849,11 @@ I18n keys:
847
849
 
848
850
  #### `transform_to_value(value)`
849
851
 
850
- Always returns ValidResult. The value is transformed to provided argument (disregarding the original value). See also [`default`](#defaultdefault_value-on-nil).
852
+ Always returns ValidResult. The value is transformed to provided argument (disregarding the original value).
853
+
854
+ Returned value is deeply frozen with [`Ractor::make_shareable`](https://docs.ruby-lang.org/en/master/Ractor.html#method-c-make_shareable) to prevent application bugs due to modification of unintentionally shared value. If that effect is undesired, use [`transform { value }`](#transform--value--) instead.
855
+
856
+ See also [`default`](#defaultdefault_value-on-nil).
851
857
 
852
858
  ### "Web-form" types
853
859
 
data/datacaster.gemspec CHANGED
@@ -8,7 +8,7 @@ Gem::Specification.new do |spec|
8
8
 
9
9
  spec.summary = %q{Run-time type checker and transformer for Ruby}
10
10
  spec.license = 'MIT'
11
- spec.required_ruby_version = Gem::Requirement.new('>= 2.7.0')
11
+ spec.required_ruby_version = Gem::Requirement.new('>= 3.1')
12
12
 
13
13
  spec.metadata['source_code_uri'] = 'https://github.com/EugZol/datacaster'
14
14
  spec.homepage = 'https://github.com/EugZol/datacaster'
@@ -19,5 +19,9 @@ module Datacaster
19
19
  def present?
20
20
  false
21
21
  end
22
+
23
+ def ==(other)
24
+ other.is_a?(self.class)
25
+ end
22
26
  end
23
27
  end
@@ -131,7 +131,7 @@ module Datacaster
131
131
  transform do |x|
132
132
  if x == Datacaster.absent ||
133
133
  (!on.nil? && x.respond_to?(on) && x.public_send(on))
134
- value
134
+ Datacaster::Utils.deep_freeze(value)
135
135
  else
136
136
  x
137
137
  end
@@ -276,7 +276,7 @@ module Datacaster
276
276
  end
277
277
 
278
278
  def transform_to_value(value)
279
- transform { value }
279
+ transform { Datacaster::Utils.deep_freeze(value) }
280
280
  end
281
281
 
282
282
  def with(keys, caster)
@@ -2,6 +2,10 @@ module Datacaster
2
2
  module Utils
3
3
  extend self
4
4
 
5
+ def deep_freeze(value, copy: true)
6
+ Ractor.make_shareable(value, copy:)
7
+ end
8
+
5
9
  def merge_errors(left, right)
6
10
  add_error_to_base = ->(hash, error) {
7
11
  hash[:base] ||= []
@@ -1,3 +1,3 @@
1
1
  module Datacaster
2
- VERSION = "3.2.8"
2
+ VERSION = "3.3.1"
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.8
4
+ version: 3.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eugene Zolotarev
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-05-07 00:00:00.000000000 Z
11
+ date: 2024-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -186,14 +186,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
186
186
  requirements:
187
187
  - - ">="
188
188
  - !ruby/object:Gem::Version
189
- version: 2.7.0
189
+ version: '3.1'
190
190
  required_rubygems_version: !ruby/object:Gem::Requirement
191
191
  requirements:
192
192
  - - ">="
193
193
  - !ruby/object:Gem::Version
194
194
  version: '0'
195
195
  requirements: []
196
- rubygems_version: 3.4.6
196
+ rubygems_version: 3.5.14
197
197
  signing_key:
198
198
  specification_version: 4
199
199
  summary: Run-time type checker and transformer for Ruby