datacaster 6.0.2 → 6.0.4

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f66df22c1ea20054ae2b16ea8ccbd778b8aac71e7898bc763036e3c4f9ba50da
4
- data.tar.gz: bad95a5182fdbbefe72c5c8f5b724c433f26cc5d676a755dcb0af554e07d95ca
3
+ metadata.gz: 3e12cb58554769d09ba9635c472f6aeafe7383fe4837a525075973f5c8f6b02b
4
+ data.tar.gz: a6cdaafccde0affef8c15a25cda41145f8b62ab8d1ef9769a3eb664ac10ce7be
5
5
  SHA512:
6
- metadata.gz: f6f707de2a1555d6dbc7756b60e8a981de97f137787dc5212b78807060d43877e0c5b18f3ad191262eabb618bed356feb32e9d96d3adf93b14bbbbe73bf2452b
7
- data.tar.gz: 8612f9609a9d1c9a8a9de4358ee66c30458158598917a3e59d09fb83582a8cdc68f7c395f577179363407fd63cbd9f72d4864b77ee957f4e4e63f6a2aad746f2
6
+ metadata.gz: b0b721aa63f9e33cb16a9ad4231a79b418b26c2ac480f57a3f4d2561e0795e4912dd373cf9105731d0909b4987152b28a8e4fef3a436676daf8a4e8eb7374f75
7
+ data.tar.gz: b1a56fceb24ae23aa2ee05924ca18f9bacb0327cf05f070a9468bef86cce6bb722183cd80800859ecbdc2b0d6d18795265f034eed955308c403a2d8b5bf93cfd
data/datacaster.gemspec CHANGED
@@ -29,4 +29,5 @@ Gem::Specification.new do |spec|
29
29
  spec.add_development_dependency 'dry-monads', '>= 1.3', '< 1.4'
30
30
 
31
31
  spec.add_runtime_dependency 'zeitwerk', '>= 2', '< 3'
32
+ spec.add_runtime_dependency 'js_regex'
32
33
  end
@@ -1,3 +1,5 @@
1
+ require 'js_regex'
2
+
1
3
  module Datacaster
2
4
  module Predefined
3
5
  extend self
@@ -159,15 +161,15 @@ module Datacaster
159
161
  return (absent | base).json_schema { base.to_json_schema }.json_schema_attributes(required: false)
160
162
  end
161
163
 
162
- caster = cast do |x|
163
- if x == Datacaster.absent ||
164
- (!on.nil? && x.respond_to?(on) && x.public_send(on))
165
- Datacaster.ValidResult(Datacaster.absent)
166
- else
167
- base.(x)
168
- end
164
+ unless on.is_a?(Symbol)
165
+ raise RuntimeError, "`on` should be a Symbol"
169
166
  end
170
167
 
168
+ caster =
169
+ absent |
170
+ (check { |x| x.respond_to?(on) && x.public_send(on) } & transform { Datacaster.absent }) |
171
+ base
172
+
171
173
  caster
172
174
  .json_schema(base.to_json_schema)
173
175
  .json_schema_attributes(required: false)
@@ -363,8 +365,12 @@ module Datacaster
363
365
  def pattern(regexp, error_key = nil)
364
366
  error_keys = ['.pattern', 'datacaster.errors.pattern']
365
367
  error_keys.unshift(error_key) if error_key
366
- string(error_key) & check { |x| x.match?(regexp) }.i18n_key(*error_keys, reference: regexp.inspect).
367
- json_schema(pattern: regexp.inspect)
368
+
369
+ ecma_regexp = JsRegex.new(regexp).to_s
370
+
371
+ string(error_key) & check { |x| x.match?(regexp) }.
372
+ i18n_key(*error_keys, reference: ecma_regexp).
373
+ json_schema(pattern: ecma_regexp)
368
374
  end
369
375
 
370
376
  # 'hash' would be a bad method name, because it would override built in Object#hash
@@ -458,7 +464,9 @@ module Datacaster
458
464
  def uuid(error_key = nil)
459
465
  error_keys = ['.uuid', 'datacaster.errors.uuid']
460
466
  error_keys.unshift(error_key) if error_key
461
- pattern(/\A\h{8}-\h{4}-\h{4}-\h{4}-\h{12}\z/, error_key).i18n_key(*error_keys)
467
+ pattern(/\A\h{8}-\h{4}-\h{4}-\h{4}-\h{12}\z/, error_key).
468
+ i18n_key(*error_keys).
469
+ json_schema { { 'type' => 'string', 'format' => 'uuid' } }
462
470
  end
463
471
 
464
472
  # Form request types
@@ -1,3 +1,3 @@
1
1
  module Datacaster
2
- VERSION = "6.0.2"
2
+ VERSION = "6.0.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: 6.0.2
4
+ version: 6.0.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: 2025-10-21 00:00:00.000000000 Z
11
+ date: 2026-07-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activemodel
@@ -106,7 +106,21 @@ dependencies:
106
106
  - - "<"
107
107
  - !ruby/object:Gem::Version
108
108
  version: '3'
109
- description:
109
+ - !ruby/object:Gem::Dependency
110
+ name: js_regex
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - ">="
114
+ - !ruby/object:Gem::Version
115
+ version: '0'
116
+ type: :runtime
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - ">="
121
+ - !ruby/object:Gem::Version
122
+ version: '0'
123
+ description:
110
124
  email:
111
125
  - eugzol@gmail.com
112
126
  executables: []
@@ -181,7 +195,7 @@ licenses:
181
195
  - MIT
182
196
  metadata:
183
197
  source_code_uri: https://github.com/EugZol/datacaster
184
- post_install_message:
198
+ post_install_message:
185
199
  rdoc_options: []
186
200
  require_paths:
187
201
  - lib
@@ -196,8 +210,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
196
210
  - !ruby/object:Gem::Version
197
211
  version: '0'
198
212
  requirements: []
199
- rubygems_version: 3.1.6
200
- signing_key:
213
+ rubygems_version: 3.5.20
214
+ signing_key:
201
215
  specification_version: 4
202
216
  summary: Run-time type checker and transformer for Ruby
203
217
  test_files: []