hanami-validations 1.3.2 → 1.3.7
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/CHANGELOG.md +21 -0
- data/README.md +4 -3
- data/hanami-validations.gemspec +21 -17
- data/lib/hanami-validations.rb +3 -1
- data/lib/hanami/validations.rb +29 -21
- data/lib/hanami/validations/form.rb +3 -1
- data/lib/hanami/validations/inline_predicate.rb +2 -0
- data/lib/hanami/validations/namespace.rb +7 -5
- data/lib/hanami/validations/predicates.rb +4 -2
- data/lib/hanami/validations/version.rb +3 -1
- metadata +43 -9
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1a260f62f3f079229e28d43c20ce88826e06d23aff8ddcd4e67b1bda812b87a2
|
4
|
+
data.tar.gz: 2f0d8555be09a4a113570f99e810a76a141b7a6728aff90c073a8740cf0c2573
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3d6ce05e6ca243b83a4a7d0ab5b3d3c41fbf86ad552f68b7439bd4f57dcbc673747a86c74b417fdeec184cdb501f208fcba5b210c5bd0b163755e9b3ef0d9fbe
|
7
|
+
data.tar.gz: c90675c4bd0ecf46a0bc9d9c6ec5e35b3d8e79270fe40abdb29c344fa8e37fc2eeb9adf3e8ae871e9428ded029ea8e3e312132d9b1fe1ed44a96250dcb9b1223
|
data/CHANGELOG.md
CHANGED
@@ -1,6 +1,27 @@
|
|
1
1
|
# Hanami::Validations
|
2
2
|
Validations mixin for Ruby objects
|
3
3
|
|
4
|
+
## v1.3.7 - 2021-01-06
|
5
|
+
### Fixed
|
6
|
+
- [Panagiotis Matsinopoulos] Ensure `predicate` and `predicates` to work together
|
7
|
+
|
8
|
+
## v1.3.6 - 2020-01-08
|
9
|
+
### Added
|
10
|
+
- [Luca Guidi] Official support for Ruby: MRI 2.7
|
11
|
+
|
12
|
+
## v1.3.5 - 2019-07-26
|
13
|
+
### Fixed
|
14
|
+
- [ippachi] Ensure I18n doesn't crash when used for inline predicates
|
15
|
+
|
16
|
+
## v1.3.4 - 2019-07-26
|
17
|
+
### Fixed
|
18
|
+
- [Luca Guidi] Ensure to load i18n backend (including `i18n` gem), when messages engine is `:i18n`
|
19
|
+
|
20
|
+
## v1.3.3 - 2019-01-31
|
21
|
+
### Fixed
|
22
|
+
- [Luca Guidi] Depend on `dry-validation` `~> 0.11`, `< 0.12`
|
23
|
+
- [Luca Guidi] Depend on `dry-logic` `~> 0.4.2`, `< 0.5`
|
24
|
+
|
4
25
|
## v1.3.2 - 2019-01-30
|
5
26
|
### Fixed
|
6
27
|
- [Luca Guidi] Depend on `dry-validation` `~> 0.11.2`, `< 0.12` in order to skip non compatible `dry-logic` `0.5.0`
|
data/README.md
CHANGED
@@ -5,8 +5,7 @@ Validations mixin for Ruby objects
|
|
5
5
|
## Status
|
6
6
|
|
7
7
|
[](https://badge.fury.io/rb/hanami-validations)
|
8
|
-
[](https://circleci.com/gh/hanami/validations/tree/master)
|
8
|
+
[](https://github.com/hanami/validations/actions?query=workflow%3Aci+branch%3Amaster)
|
10
9
|
[](https://codecov.io/gh/hanami/validations)
|
11
10
|
[](https://depfu.com/github/hanami/validations?project=Bundler)
|
12
11
|
[](http://inch-ci.org/github/hanami/validations)
|
@@ -14,6 +13,8 @@ Validations mixin for Ruby objects
|
|
14
13
|
## Contact
|
15
14
|
|
16
15
|
* Home page: http://hanamirb.org
|
16
|
+
* Community: http://hanamirb.org/community
|
17
|
+
* Guides: https://guides.hanamirb.org
|
17
18
|
* Mailing List: http://hanamirb.org/mailing-list
|
18
19
|
* API Doc: http://rdoc.info/gems/hanami-validations
|
19
20
|
* Bugs/Issues: https://github.com/hanami/validations/issues
|
@@ -798,6 +799,6 @@ Thanks to [dry-rb](http://dry-rb.org) Community for their priceless support. ❤
|
|
798
799
|
|
799
800
|
## Copyright
|
800
801
|
|
801
|
-
Copyright © 2014-
|
802
|
+
Copyright © 2014-2021 Luca Guidi – Released under MIT License
|
802
803
|
|
803
804
|
This project was formerly known as Lotus (`lotus-validations`).
|
data/hanami-validations.gemspec
CHANGED
@@ -1,27 +1,31 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
lib = File.expand_path("../lib", __FILE__)
|
2
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
3
|
-
require
|
5
|
+
require "hanami/validations/version"
|
4
6
|
|
5
7
|
Gem::Specification.new do |spec|
|
6
|
-
spec.name =
|
8
|
+
spec.name = "hanami-validations"
|
7
9
|
spec.version = Hanami::Validations::VERSION
|
8
|
-
spec.authors = [
|
9
|
-
spec.email = [
|
10
|
-
spec.summary =
|
11
|
-
spec.description =
|
12
|
-
spec.homepage =
|
13
|
-
spec.license =
|
10
|
+
spec.authors = ["Luca Guidi"]
|
11
|
+
spec.email = ["me@lucaguidi.com"]
|
12
|
+
spec.summary = "Validations mixin for Ruby objects"
|
13
|
+
spec.description = "Validations mixin for Ruby objects and support for Hanami"
|
14
|
+
spec.homepage = "http://hanamirb.org"
|
15
|
+
spec.license = "MIT"
|
14
16
|
|
15
|
-
spec.files = `git ls-files -- lib/* LICENSE.md README.md CHANGELOG.md hanami-validations.gemspec`.split(
|
17
|
+
spec.files = `git ls-files -- lib/* LICENSE.md README.md CHANGELOG.md hanami-validations.gemspec`.split($/)
|
16
18
|
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
17
19
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
18
|
-
spec.require_paths = [
|
19
|
-
spec.required_ruby_version =
|
20
|
+
spec.require_paths = ["lib"]
|
21
|
+
spec.required_ruby_version = ">= 2.3.0"
|
20
22
|
|
21
|
-
spec.add_dependency
|
22
|
-
spec.add_dependency
|
23
|
+
spec.add_dependency "hanami-utils", "~> 1.3"
|
24
|
+
spec.add_dependency "dry-validation", "~> 0.11", "< 0.12"
|
25
|
+
spec.add_dependency "dry-logic", "~> 0.4.2", "< 0.5"
|
23
26
|
|
24
|
-
spec.add_development_dependency
|
25
|
-
spec.add_development_dependency
|
26
|
-
spec.add_development_dependency
|
27
|
+
spec.add_development_dependency "bundler", ">= 1.6", "< 3"
|
28
|
+
spec.add_development_dependency "rake", "~> 13"
|
29
|
+
spec.add_development_dependency "rspec", "~> 3.9"
|
30
|
+
spec.add_development_dependency "rubocop", "0.81" # rubocop 0.81+ removed support for Ruby 2.3
|
27
31
|
end
|
data/lib/hanami-validations.rb
CHANGED
data/lib/hanami/validations.rb
CHANGED
@@ -1,9 +1,11 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
require
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "dry-validation"
|
4
|
+
require "hanami/utils/class_attribute"
|
5
|
+
require "hanami/validations/namespace"
|
6
|
+
require "hanami/validations/predicates"
|
7
|
+
require "hanami/validations/inline_predicate"
|
8
|
+
require "set"
|
7
9
|
|
8
10
|
Dry::Validation::Messages::Namespaced.configure do |config|
|
9
11
|
# rubocop:disable Lint/NestedPercentLiteral
|
@@ -45,7 +47,7 @@ module Hanami
|
|
45
47
|
# @api private
|
46
48
|
#
|
47
49
|
# @see http://www.ruby-doc.org/core/Module.html#method-i-included
|
48
|
-
def self.included(base)
|
50
|
+
def self.included(base)
|
49
51
|
base.class_eval do
|
50
52
|
extend ClassMethods
|
51
53
|
|
@@ -71,7 +73,7 @@ module Hanami
|
|
71
73
|
#
|
72
74
|
# @since 0.6.0
|
73
75
|
#
|
74
|
-
# @see
|
76
|
+
# @see https://guides.hanamirb.org/validations/overview
|
75
77
|
#
|
76
78
|
# @example Basic Example
|
77
79
|
# require 'hanami/validations'
|
@@ -95,8 +97,8 @@ module Hanami
|
|
95
97
|
# result.success? # => false
|
96
98
|
# result.messages # => {:name=>["must be filled"]}
|
97
99
|
# result.output # => {:name=>""}
|
98
|
-
def validations(&blk)
|
99
|
-
schema_predicates =
|
100
|
+
def validations(&blk)
|
101
|
+
schema_predicates = __predicates
|
100
102
|
|
101
103
|
base = _build(predicates: schema_predicates, &_base_rules)
|
102
104
|
schema = _build(predicates: schema_predicates, rules: base.rules, &blk)
|
@@ -152,7 +154,7 @@ module Hanami
|
|
152
154
|
#
|
153
155
|
# result = Signup.new(name: nil).call
|
154
156
|
# result.messages # => { :name => ['must be foo'] }
|
155
|
-
def predicate(name, message:
|
157
|
+
def predicate(name, message: "is invalid", &blk)
|
156
158
|
_predicates << InlinePredicate.new(name, message, &blk)
|
157
159
|
end
|
158
160
|
|
@@ -261,7 +263,7 @@ module Hanami
|
|
261
263
|
# @since 0.6.0
|
262
264
|
# @api private
|
263
265
|
def _build(options = {}, &blk)
|
264
|
-
options = {
|
266
|
+
options = {build: false}.merge(options)
|
265
267
|
Dry::Validation.__send__(_schema_type, options, &blk)
|
266
268
|
end
|
267
269
|
|
@@ -285,6 +287,8 @@ module Hanami
|
|
285
287
|
config.messages = _messages unless _messages.nil?
|
286
288
|
config.messages_file = _messages_path unless _messages_path.nil?
|
287
289
|
config.namespace = namespace
|
290
|
+
|
291
|
+
require "dry/validation/messages/i18n" if config.messages == :i18n
|
288
292
|
end
|
289
293
|
end
|
290
294
|
|
@@ -294,15 +298,17 @@ module Hanami
|
|
294
298
|
return if _predicates_module.nil? && _predicates.empty?
|
295
299
|
|
296
300
|
lambda do |config|
|
297
|
-
config.messages = _predicates_module&.messages || DEFAULT_MESSAGES_ENGINE
|
301
|
+
config.messages = _predicates_module&.messages || @_messages || DEFAULT_MESSAGES_ENGINE
|
298
302
|
config.messages_file = _predicates_module.messages_path unless _predicates_module.nil?
|
303
|
+
|
304
|
+
require "dry/validation/messages/i18n" if config.messages == :i18n
|
299
305
|
end
|
300
306
|
end
|
301
307
|
|
302
308
|
# @since 0.6.0
|
303
309
|
# @api private
|
304
310
|
def __predicates
|
305
|
-
mod = Module.new { include Hanami::Validations::Predicates }
|
311
|
+
mod = _predicates_module || Module.new { include Hanami::Validations::Predicates }
|
306
312
|
|
307
313
|
_predicates.each do |p|
|
308
314
|
mod.module_eval do
|
@@ -315,7 +321,7 @@ module Hanami
|
|
315
321
|
|
316
322
|
# @since 0.6.0
|
317
323
|
# @api private
|
318
|
-
def __messages
|
324
|
+
def __messages
|
319
325
|
result = _predicates.each_with_object({}) do |p, ret|
|
320
326
|
ret[p.name] = p.message
|
321
327
|
end
|
@@ -328,7 +334,7 @@ module Hanami
|
|
328
334
|
def self.extended(base)
|
329
335
|
base.instance_eval do
|
330
336
|
def __messages
|
331
|
-
Hash[en: {
|
337
|
+
Hash[en: {errors: @@__messages}]
|
332
338
|
end
|
333
339
|
end
|
334
340
|
end
|
@@ -337,11 +343,13 @@ module Hanami
|
|
337
343
|
def messages
|
338
344
|
engine = super
|
339
345
|
|
340
|
-
if engine.respond_to?(:merge)
|
341
|
-
|
342
|
-
|
343
|
-
|
344
|
-
|
346
|
+
messages = if engine.respond_to?(:merge)
|
347
|
+
engine
|
348
|
+
else
|
349
|
+
engine.messages
|
350
|
+
end
|
351
|
+
|
352
|
+
config.messages == :i18n ? messages : messages.merge(__messages)
|
345
353
|
end
|
346
354
|
end
|
347
355
|
end
|
@@ -1,4 +1,6 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require "hanami/utils/string"
|
2
4
|
|
3
5
|
module Hanami
|
4
6
|
module Validations
|
@@ -12,19 +14,19 @@ module Hanami
|
|
12
14
|
class Namespace
|
13
15
|
# @since 0.6.0
|
14
16
|
# @api private
|
15
|
-
SUFFIX =
|
17
|
+
SUFFIX = "Validator"
|
16
18
|
|
17
19
|
# @since 0.6.0
|
18
20
|
# @api private
|
19
|
-
SUFFIX_REPLACEMENT =
|
21
|
+
SUFFIX_REPLACEMENT = ""
|
20
22
|
|
21
23
|
# @since 0.6.0
|
22
24
|
# @api private
|
23
|
-
RUBY_NAMESPACE_SEPARATOR =
|
25
|
+
RUBY_NAMESPACE_SEPARATOR = "/"
|
24
26
|
|
25
27
|
# @since 0.6.0
|
26
28
|
# @api private
|
27
|
-
RUBY_NAMESPACE_REPLACEMENT =
|
29
|
+
RUBY_NAMESPACE_REPLACEMENT = "."
|
28
30
|
|
29
31
|
# @since 0.6.0
|
30
32
|
# @api private
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hanami-validations
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.7
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Luca Guidi
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-01-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: hanami-utils
|
@@ -30,7 +30,7 @@ dependencies:
|
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: 0.11
|
33
|
+
version: '0.11'
|
34
34
|
- - "<"
|
35
35
|
- !ruby/object:Gem::Version
|
36
36
|
version: '0.12'
|
@@ -40,10 +40,30 @@ dependencies:
|
|
40
40
|
requirements:
|
41
41
|
- - "~>"
|
42
42
|
- !ruby/object:Gem::Version
|
43
|
-
version: 0.11
|
43
|
+
version: '0.11'
|
44
44
|
- - "<"
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: '0.12'
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: dry-logic
|
49
|
+
requirement: !ruby/object:Gem::Requirement
|
50
|
+
requirements:
|
51
|
+
- - "~>"
|
52
|
+
- !ruby/object:Gem::Version
|
53
|
+
version: 0.4.2
|
54
|
+
- - "<"
|
55
|
+
- !ruby/object:Gem::Version
|
56
|
+
version: '0.5'
|
57
|
+
type: :runtime
|
58
|
+
prerelease: false
|
59
|
+
version_requirements: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - "~>"
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: 0.4.2
|
64
|
+
- - "<"
|
65
|
+
- !ruby/object:Gem::Version
|
66
|
+
version: '0.5'
|
47
67
|
- !ruby/object:Gem::Dependency
|
48
68
|
name: bundler
|
49
69
|
requirement: !ruby/object:Gem::Requirement
|
@@ -70,28 +90,42 @@ dependencies:
|
|
70
90
|
requirements:
|
71
91
|
- - "~>"
|
72
92
|
- !ruby/object:Gem::Version
|
73
|
-
version: '
|
93
|
+
version: '13'
|
74
94
|
type: :development
|
75
95
|
prerelease: false
|
76
96
|
version_requirements: !ruby/object:Gem::Requirement
|
77
97
|
requirements:
|
78
98
|
- - "~>"
|
79
99
|
- !ruby/object:Gem::Version
|
80
|
-
version: '
|
100
|
+
version: '13'
|
81
101
|
- !ruby/object:Gem::Dependency
|
82
102
|
name: rspec
|
83
103
|
requirement: !ruby/object:Gem::Requirement
|
84
104
|
requirements:
|
85
105
|
- - "~>"
|
86
106
|
- !ruby/object:Gem::Version
|
87
|
-
version: '3.
|
107
|
+
version: '3.9'
|
88
108
|
type: :development
|
89
109
|
prerelease: false
|
90
110
|
version_requirements: !ruby/object:Gem::Requirement
|
91
111
|
requirements:
|
92
112
|
- - "~>"
|
93
113
|
- !ruby/object:Gem::Version
|
94
|
-
version: '3.
|
114
|
+
version: '3.9'
|
115
|
+
- !ruby/object:Gem::Dependency
|
116
|
+
name: rubocop
|
117
|
+
requirement: !ruby/object:Gem::Requirement
|
118
|
+
requirements:
|
119
|
+
- - '='
|
120
|
+
- !ruby/object:Gem::Version
|
121
|
+
version: '0.81'
|
122
|
+
type: :development
|
123
|
+
prerelease: false
|
124
|
+
version_requirements: !ruby/object:Gem::Requirement
|
125
|
+
requirements:
|
126
|
+
- - '='
|
127
|
+
- !ruby/object:Gem::Version
|
128
|
+
version: '0.81'
|
95
129
|
description: Validations mixin for Ruby objects and support for Hanami
|
96
130
|
email:
|
97
131
|
- me@lucaguidi.com
|
@@ -129,7 +163,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
129
163
|
- !ruby/object:Gem::Version
|
130
164
|
version: '0'
|
131
165
|
requirements: []
|
132
|
-
rubygems_version: 3.
|
166
|
+
rubygems_version: 3.2.2
|
133
167
|
signing_key:
|
134
168
|
specification_version: 4
|
135
169
|
summary: Validations mixin for Ruby objects
|