hanami-validations 1.3.6 → 1.3.9
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 +12 -0
- data/README.md +7 -4
- data/hanami-validations.gemspec +23 -18
- 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
- data/lib/hanami/validations.rb +17 -15
- data/lib/hanami-validations.rb +3 -1
- metadata +50 -8
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: d1f7b53f0322c8691f0b9a90d589ac6761a04af957b5f3549571617105399131
|
|
4
|
+
data.tar.gz: 8fb7a92a0552db6db2ddf5c883385e99c89dce54948611396791da341a9b402d
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: b6e82c5299d26c4937f87f253991f0007e730f7f243ca6a69ee43df8d85dda6f399a56dad3e3a9a95265ecbe58e42533747672d93c142985a18b76010c2eee83
|
|
7
|
+
data.tar.gz: b2e3f208d4649541ed63290d6da7c7f1dfbe1e4ab7f3e6d4d975ed3374d8b350c23fc8fe97d0a31aee85d7ef42c094f88c8297c22ea7a104ca6ff17c08009e48
|
data/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
# Hanami::Validations
|
|
2
2
|
Validations mixin for Ruby objects
|
|
3
3
|
|
|
4
|
+
## v1.3.9 - 2022-07-21
|
|
5
|
+
### Fixed
|
|
6
|
+
- [Sean Collins] Depend on `dry-container` `<= 0.9`
|
|
7
|
+
|
|
8
|
+
## v1.3.8 - 2021-10-14
|
|
9
|
+
### Fixed
|
|
10
|
+
- [Luca Guidi] Ensure `.validations` to not raise `NoMethodError: undefined method 'size' for nil:NilClass`. Due to a breaking change in transitive dependency (`dry-configurable` `0.13.x`).
|
|
11
|
+
|
|
12
|
+
## v1.3.7 - 2021-01-06
|
|
13
|
+
### Fixed
|
|
14
|
+
- [Panagiotis Matsinopoulos] Ensure `predicate` and `predicates` to work together
|
|
15
|
+
|
|
4
16
|
## v1.3.6 - 2020-01-08
|
|
5
17
|
### Added
|
|
6
18
|
- [Luca Guidi] Official support for Ruby: MRI 2.7
|
data/README.md
CHANGED
|
@@ -2,12 +2,15 @@
|
|
|
2
2
|
|
|
3
3
|
Validations mixin for Ruby objects
|
|
4
4
|
|
|
5
|
+
## Version
|
|
6
|
+
|
|
7
|
+
**This branch contains the code for `hanami-validations` 1.3.x.**
|
|
8
|
+
|
|
5
9
|
## Status
|
|
6
10
|
|
|
7
11
|
[](https://badge.fury.io/rb/hanami-validations)
|
|
8
|
-
[](https://codecov.io/gh/hanami/validations)
|
|
12
|
+
[](https://github.com/hanami/validations/actions?query=workflow%3Aci+branch%3A1.3.x)
|
|
13
|
+
[](https://codecov.io/gh/hanami/validations)
|
|
11
14
|
[](https://depfu.com/github/hanami/validations?project=Bundler)
|
|
12
15
|
[](http://inch-ci.org/github/hanami/validations)
|
|
13
16
|
|
|
@@ -800,6 +803,6 @@ Thanks to [dry-rb](http://dry-rb.org) Community for their priceless support. ❤
|
|
|
800
803
|
|
|
801
804
|
## Copyright
|
|
802
805
|
|
|
803
|
-
Copyright © 2014-
|
|
806
|
+
Copyright © 2014-2021 Luca Guidi – Released under MIT License
|
|
804
807
|
|
|
805
808
|
This project was formerly known as Lotus (`lotus-validations`).
|
data/hanami-validations.gemspec
CHANGED
|
@@ -1,28 +1,33 @@
|
|
|
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
|
|
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"
|
|
26
|
+
spec.add_dependency "dry-configurable", "<= 0.12"
|
|
27
|
+
spec.add_dependency "dry-container", "<= 0.9"
|
|
24
28
|
|
|
25
|
-
spec.add_development_dependency
|
|
26
|
-
spec.add_development_dependency
|
|
27
|
-
spec.add_development_dependency
|
|
29
|
+
spec.add_development_dependency "bundler", ">= 1.6", "< 3"
|
|
30
|
+
spec.add_development_dependency "rake", "~> 13"
|
|
31
|
+
spec.add_development_dependency "rspec", "~> 3.9"
|
|
32
|
+
spec.add_development_dependency "rubocop", "0.81" # rubocop 0.81+ removed support for Ruby 2.3
|
|
28
33
|
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
|
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
|
|
|
@@ -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
|
|
|
@@ -292,7 +294,7 @@ module Hanami
|
|
|
292
294
|
|
|
293
295
|
# @since 0.6.0
|
|
294
296
|
# @api private
|
|
295
|
-
def _schema_predicates
|
|
297
|
+
def _schema_predicates
|
|
296
298
|
return if _predicates_module.nil? && _predicates.empty?
|
|
297
299
|
|
|
298
300
|
lambda do |config|
|
|
@@ -306,7 +308,7 @@ module Hanami
|
|
|
306
308
|
# @since 0.6.0
|
|
307
309
|
# @api private
|
|
308
310
|
def __predicates
|
|
309
|
-
mod = Module.new { include Hanami::Validations::Predicates }
|
|
311
|
+
mod = _predicates_module || Module.new { include Hanami::Validations::Predicates }
|
|
310
312
|
|
|
311
313
|
_predicates.each do |p|
|
|
312
314
|
mod.module_eval do
|
|
@@ -319,7 +321,7 @@ module Hanami
|
|
|
319
321
|
|
|
320
322
|
# @since 0.6.0
|
|
321
323
|
# @api private
|
|
322
|
-
def __messages
|
|
324
|
+
def __messages
|
|
323
325
|
result = _predicates.each_with_object({}) do |p, ret|
|
|
324
326
|
ret[p.name] = p.message
|
|
325
327
|
end
|
|
@@ -332,7 +334,7 @@ module Hanami
|
|
|
332
334
|
def self.extended(base)
|
|
333
335
|
base.instance_eval do
|
|
334
336
|
def __messages
|
|
335
|
-
Hash[en: {
|
|
337
|
+
Hash[en: {errors: @@__messages}]
|
|
336
338
|
end
|
|
337
339
|
end
|
|
338
340
|
end
|
data/lib/hanami-validations.rb
CHANGED
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.9
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Luca Guidi
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date:
|
|
11
|
+
date: 2022-08-25 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: hanami-utils
|
|
@@ -64,6 +64,34 @@ dependencies:
|
|
|
64
64
|
- - "<"
|
|
65
65
|
- !ruby/object:Gem::Version
|
|
66
66
|
version: '0.5'
|
|
67
|
+
- !ruby/object:Gem::Dependency
|
|
68
|
+
name: dry-configurable
|
|
69
|
+
requirement: !ruby/object:Gem::Requirement
|
|
70
|
+
requirements:
|
|
71
|
+
- - "<="
|
|
72
|
+
- !ruby/object:Gem::Version
|
|
73
|
+
version: '0.12'
|
|
74
|
+
type: :runtime
|
|
75
|
+
prerelease: false
|
|
76
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
77
|
+
requirements:
|
|
78
|
+
- - "<="
|
|
79
|
+
- !ruby/object:Gem::Version
|
|
80
|
+
version: '0.12'
|
|
81
|
+
- !ruby/object:Gem::Dependency
|
|
82
|
+
name: dry-container
|
|
83
|
+
requirement: !ruby/object:Gem::Requirement
|
|
84
|
+
requirements:
|
|
85
|
+
- - "<="
|
|
86
|
+
- !ruby/object:Gem::Version
|
|
87
|
+
version: '0.9'
|
|
88
|
+
type: :runtime
|
|
89
|
+
prerelease: false
|
|
90
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
91
|
+
requirements:
|
|
92
|
+
- - "<="
|
|
93
|
+
- !ruby/object:Gem::Version
|
|
94
|
+
version: '0.9'
|
|
67
95
|
- !ruby/object:Gem::Dependency
|
|
68
96
|
name: bundler
|
|
69
97
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -104,14 +132,28 @@ dependencies:
|
|
|
104
132
|
requirements:
|
|
105
133
|
- - "~>"
|
|
106
134
|
- !ruby/object:Gem::Version
|
|
107
|
-
version: '3.
|
|
135
|
+
version: '3.9'
|
|
108
136
|
type: :development
|
|
109
137
|
prerelease: false
|
|
110
138
|
version_requirements: !ruby/object:Gem::Requirement
|
|
111
139
|
requirements:
|
|
112
140
|
- - "~>"
|
|
113
141
|
- !ruby/object:Gem::Version
|
|
114
|
-
version: '3.
|
|
142
|
+
version: '3.9'
|
|
143
|
+
- !ruby/object:Gem::Dependency
|
|
144
|
+
name: rubocop
|
|
145
|
+
requirement: !ruby/object:Gem::Requirement
|
|
146
|
+
requirements:
|
|
147
|
+
- - '='
|
|
148
|
+
- !ruby/object:Gem::Version
|
|
149
|
+
version: '0.81'
|
|
150
|
+
type: :development
|
|
151
|
+
prerelease: false
|
|
152
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
153
|
+
requirements:
|
|
154
|
+
- - '='
|
|
155
|
+
- !ruby/object:Gem::Version
|
|
156
|
+
version: '0.81'
|
|
115
157
|
description: Validations mixin for Ruby objects and support for Hanami
|
|
116
158
|
email:
|
|
117
159
|
- me@lucaguidi.com
|
|
@@ -134,7 +176,7 @@ homepage: http://hanamirb.org
|
|
|
134
176
|
licenses:
|
|
135
177
|
- MIT
|
|
136
178
|
metadata: {}
|
|
137
|
-
post_install_message:
|
|
179
|
+
post_install_message:
|
|
138
180
|
rdoc_options: []
|
|
139
181
|
require_paths:
|
|
140
182
|
- lib
|
|
@@ -149,8 +191,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
149
191
|
- !ruby/object:Gem::Version
|
|
150
192
|
version: '0'
|
|
151
193
|
requirements: []
|
|
152
|
-
rubygems_version: 3.
|
|
153
|
-
signing_key:
|
|
194
|
+
rubygems_version: 3.3.7
|
|
195
|
+
signing_key:
|
|
154
196
|
specification_version: 4
|
|
155
197
|
summary: Validations mixin for Ruby objects
|
|
156
198
|
test_files: []
|