datacaster 3.2.7 → 3.2.8

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: cecd5729ff179f70e6a7530603255f009814b7d4ef1d9dbe576a5f2b9e0bc222
4
- data.tar.gz: 4e234450bc92faf277789eb21ccbd03ddb544253250978da41d85dd9d12f8e39
3
+ metadata.gz: 7e5f8dec00cd9987c6efe8bbf54939b6a4df8604cffb7bc2be43d3e97fc8c8b7
4
+ data.tar.gz: a2bf2ab038537307304aade93ec9143fe489ece282ffb6d1bb92cdbe0d241de9
5
5
  SHA512:
6
- metadata.gz: 68e2588ec262fad2419fe3adf0a5d87aacfb28375ae47a277c4c8cb03e172913aec763375f1ffce90d2422269d219c1ff0f504921d5afc2be78c1efc8a3a2062
7
- data.tar.gz: 335ef1ea64bbc63c78b0c6ef44d330967173187d6ac15bdc7b788bee9b38be77ebc63e892d97914f99fa7da1f25a604f10c96038c2f6ad4bb15b6319f5b2db0b
6
+ metadata.gz: 4a99eaac0cfdb79b651ea7056dd77e279768e0ad0123107fb26f211cfe5d0bd605b0bfd19b649ac6041ac8a527c1314b5202ba790c2dfbea5bd85363a06756a6
7
+ data.tar.gz: d351457a3693f7a919fe0252cfc664973231c91c7b50dd2404beb4bfefa4d515541147272bafbf9fd53b109e6565f04fd4202adaa9fa347587422f0342b08be4
data/README.md CHANGED
@@ -31,6 +31,8 @@ It is currently used in production in several projects (mainly as request parame
31
31
  - [`hash_with_symbolized_keys(error_key = nil)`](#hash_with_symbolized_keyserror_key--nil)
32
32
  - [`integer32(error_key = nil)`](#integer32error_key--nil)
33
33
  - [`non_empty_string(error_key = nil)`](#non_empty_stringerror_key--nil)
34
+ - [`pattern(regexp, error_key = nil)`](#patternregexp-error_key--nil)
35
+ - [`uuid(error_key = nil)`](#uuiderror_key--nil)
34
36
  - [Special types](#special-types)
35
37
  - [`absent(error_key = nil, on: nil)`](#absenterror_key--nil-on-nil)
36
38
  - [`any(error_key = nil)`](#anyerror_key--nil)
@@ -525,9 +527,29 @@ I18n keys:
525
527
 
526
528
  Returns ValidResult if and only if provided value is a string and is not empty. Doesn't transform the value.
527
529
 
530
+ I18n keys:
531
+
528
532
  * not a string – `error_key`, `'.string'`, `'datacaster.errors.string'`
529
533
  * is empty – `error_key`, `'.non_empty_string'`, `'datacaster.errors.non_empty_string'`
530
534
 
535
+ #### `pattern(regexp, error_key = nil)`
536
+
537
+ Returns ValidResult if and only if provided value is a string and satisfies regexp. Doesn't transform the value. Don't forget to provide start/end markers in the regexp if needed, e.g. `/\A\d+\z/` for digits-only string.
538
+
539
+ I18n keys:
540
+
541
+ * not a string – `error_key`, `'.string'`, `'datacaster.errors.string'`
542
+ * doesn't satisfy the regexp – `error_key`, `'.pattern'`, `'datacaster.errors.pattern'`
543
+
544
+ #### `uuid(error_key = nil)`
545
+
546
+ Returns ValidResult if and only if provided value is a string and UUID. Doesn't transform the value.
547
+
548
+ I18n keys:
549
+
550
+ * not a string – `error_key`, `'.string'`, `'datacaster.errors.string'`
551
+ * not UUID – `error_key`, `'.uuid'`, `'datacaster.errors.uuid'`
552
+
531
553
  ### Special types
532
554
 
533
555
  #### `absent(error_key = nil, on: nil)`
@@ -16,6 +16,7 @@ en:
16
16
  integer32: is not a 32-bit integer
17
17
  iso8601: is not a string with ISO-8601 date and time
18
18
  must_be: "is not %{reference}"
19
+ pattern: has invalid format
19
20
  relate: "%{left} should be %{op} %{right}"
20
21
  responds_to: "does not respond to %{reference}"
21
22
  string: is not a string
@@ -25,3 +26,4 @@ en:
25
26
  non_empty_string: should be non-empty string
26
27
  switch: is invalid
27
28
  try: raised an error
29
+ uuid: is not UUID
@@ -319,6 +319,12 @@ module Datacaster
319
319
  check { |x| x.is_a?(Float) }.i18n_key(*error_keys)
320
320
  end
321
321
 
322
+ def pattern(regexp, error_key = nil)
323
+ error_keys = ['.pattern', 'datacaster.errors.pattern']
324
+ error_keys.unshift(error_key) if error_key
325
+ string(error_key) & check { |x| x.match?(regexp) }.i18n_key(*error_keys, reference: regexp.inspect)
326
+ end
327
+
322
328
  # 'hash' would be a bad method name, because it would override built in Object#hash
323
329
  def hash_value(error_key = nil)
324
330
  error_keys = ['.hash_value', 'datacaster.errors.hash_value']
@@ -360,6 +366,12 @@ module Datacaster
360
366
  string(error_key) & check { |x| !x.empty? }.i18n_key(*error_keys)
361
367
  end
362
368
 
369
+ def uuid(error_key = nil)
370
+ error_keys = ['.uuid', 'datacaster.errors.uuid']
371
+ error_keys.unshift(error_key) if error_key
372
+ string(error_key) & pattern(/\A\h{8}-\h{4}-\h{4}-\h{4}-\h{12}\z/).i18n_key(*error_keys)
373
+ end
374
+
363
375
  # Form request types
364
376
 
365
377
  def iso8601(error_key = nil)
@@ -1,3 +1,3 @@
1
1
  module Datacaster
2
- VERSION = "3.2.7"
2
+ VERSION = "3.2.8"
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.7
4
+ version: 3.2.8
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: 2024-04-16 00:00:00.000000000 Z
11
+ date: 2024-05-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.1.6
197
- signing_key:
196
+ rubygems_version: 3.4.6
197
+ signing_key:
198
198
  specification_version: 4
199
199
  summary: Run-time type checker and transformer for Ruby
200
200
  test_files: []