mini_defender 0.6.8 → 0.7.0

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: 3bae6fdb0faacfd54fe463d30f80710e40d383bd868d64e65da7243bae0c5b1c
4
- data.tar.gz: f9cf13d8acbc654b9c647c33b322937722b97f0a99b8d389d4311002a3a5a65e
3
+ metadata.gz: c72fe66d029b23db90c463a27a4ac69547465047620687c4d4da4f40e1471230
4
+ data.tar.gz: 2dde879487e7f23b65f59ba8b3b3527490f15db79f9101cb523691e2ad532aae
5
5
  SHA512:
6
- metadata.gz: 2c50350da6f341f0487357cf63cad4dbf070c5c8f89614344619182dffd9b7f345b3015466e185fe4114cadcd2a3f7159bbf87e7413bd0d887327cdb13cebbce
7
- data.tar.gz: 8bb5e5e2702c985a7c3933147d0db5f59abde4e566f8747aa6158d21fb5bd440dcf6f1d8706ae0846e0532a14d918d2b36d04673f519d98c72412b480c25fef4
6
+ metadata.gz: 864b6c2ad31fa2df0a9651e0e27907912f68a3b888afadc410e53ccca6604acc6f06ff9e6bbf1e1676d40cee7fd7dbcfa6e45c0d197861b8b11cd50be866a071
7
+ data.tar.gz: ce39dd86774e6387d06e1e17a9584c43928b0069ec349d5392de19f2dd7e3afc42ee7f3c65761fa2d49037a30382691b5afd861628b7ac478a4fab92e16c09a4
@@ -6,11 +6,27 @@ class MiniDefender::Rules::Numeric < MiniDefender::Rule
6
6
  end
7
7
 
8
8
  def coerce(value)
9
- value.is_a?(Numeric) ? value : Float(value.to_s)
9
+ if value.is_a?(Numeric)
10
+ return value
11
+ end
12
+
13
+ if value.is_a?(String)
14
+ value = value.gsub(',', '')
15
+ end
16
+
17
+ Float(value.to_s)
10
18
  end
11
19
 
12
20
  def passes?(attribute, value, validator)
13
- value.is_a?(Numeric) || Float(value.to_s) rescue false
21
+ if value.is_a?(Numeric)
22
+ return true
23
+ end
24
+
25
+ if value.is_a?(String)
26
+ value = value.gsub(',', '')
27
+ end
28
+
29
+ Float(value.to_s) rescue false
14
30
  end
15
31
 
16
32
  def message(attribute, value, validator)
@@ -13,16 +13,16 @@ class MiniDefender::Rules::Required < MiniDefender::Rule
13
13
 
14
14
  def passes?(attribute, value, validator)
15
15
  case value
16
- when nil
17
- false
18
- when String
19
- value.strip.length > 0
20
- when Enumerable
21
- value.length > 0
22
- when ActionDispatch::Http::UploadedFile
23
- value.path && value.path.length > 0 && value.size > 0
24
- else
25
- true
16
+ when nil
17
+ false
18
+ when String
19
+ value.strip.length > 0
20
+ when Enumerable
21
+ value.length > 0
22
+ when ActionDispatch::Http::UploadedFile
23
+ value.path && value.path.length > 0 && value.size > 0
24
+ else
25
+ true
26
26
  end
27
27
  end
28
28
 
@@ -4,7 +4,9 @@ require_relative 'required'
4
4
 
5
5
  class MiniDefender::Rules::RequiredIf < MiniDefender::Rules::Required
6
6
  def initialize(target, value)
7
- raise ArgumentError, 'Target must be a string' unless target.is_a?(String)
7
+ unless target.is_a?(String)
8
+ raise ArgumentError, 'Target must be a string'
9
+ end
8
10
 
9
11
  @target = target
10
12
  @value = value
@@ -15,12 +17,27 @@ class MiniDefender::Rules::RequiredIf < MiniDefender::Rules::Required
15
17
  end
16
18
 
17
19
  def self.make(args)
18
- raise ArgumentError, 'Target and expected value are required.' unless args.length == 2
20
+ unless args.length == 2
21
+ raise ArgumentError, 'Target and expected value are required.'
22
+ end
19
23
 
20
24
  self.new(args[0], args[1])
21
25
  end
22
26
 
23
27
  def implicit?(validator)
24
- validator.data.key?(@target) && validator.data[@target] == @value
28
+ unless validator.data.key?(@target)
29
+ return false
30
+ end
31
+
32
+ target_value = validator.data[@target]
33
+
34
+ case target_value
35
+ when Array
36
+ target_value.include?(@value)
37
+ when Hash
38
+ target_value.keys.include?(@value)
39
+ else
40
+ target_value == @value
41
+ end
25
42
  end
26
43
  end
@@ -4,7 +4,9 @@ require_relative 'required'
4
4
 
5
5
  class MiniDefender::Rules::RequiredUnless < MiniDefender::Rules::Required
6
6
  def initialize(target, value)
7
- raise ArgumentError, 'Target must be a string' unless target.is_a?(String)
7
+ unless target.is_a?(String)
8
+ raise ArgumentError, 'Target must be a string'
9
+ end
8
10
 
9
11
  @target = target
10
12
  @value = value
@@ -15,12 +17,27 @@ class MiniDefender::Rules::RequiredUnless < MiniDefender::Rules::Required
15
17
  end
16
18
 
17
19
  def self.make(args)
18
- raise ArgumentError, 'Target and expected value are required.' unless args.length == 2
20
+ unless args.length == 2
21
+ raise ArgumentError, 'Target and expected value are required.'
22
+ end
19
23
 
20
24
  self.new(args[0], args[1])
21
25
  end
22
26
 
23
27
  def implicit?(validator)
24
- validator.data.key?(@target) && validator.data[@target] != @value
28
+ unless validator.data.key?(@target)
29
+ return false
30
+ end
31
+
32
+ target_value = validator.data[@target]
33
+
34
+ case target_value
35
+ when Array
36
+ ! target_value.include?(@value)
37
+ when Hash
38
+ ! target_value.keys.include?(@value)
39
+ else
40
+ target_value != @value
41
+ end
25
42
  end
26
43
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MiniDefender
4
- VERSION = "0.6.8"
4
+ VERSION = "0.7.0"
5
5
  end
@@ -31,6 +31,7 @@ Gem::Specification.new do |spec|
31
31
  spec.add_runtime_dependency 'activesupport', '>= 6.0'
32
32
  spec.add_runtime_dependency 'activemodel', '>= 6.0'
33
33
  spec.add_runtime_dependency 'actionpack', '>= 6.0'
34
+ spec.add_runtime_dependency 'railties', '>= 6.0'
34
35
  spec.add_runtime_dependency 'countries'
35
36
  spec.add_runtime_dependency 'money'
36
37
  spec.add_runtime_dependency 'marcel'
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mini_defender
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.8
4
+ version: 0.7.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ali Alhoshaiyan
8
- autorequire:
9
8
  bindir: exe
10
9
  cert_chain: []
11
- date: 2024-11-17 00:00:00.000000000 Z
10
+ date: 2025-07-17 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: activesupport
@@ -52,6 +51,20 @@ dependencies:
52
51
  - - ">="
53
52
  - !ruby/object:Gem::Version
54
53
  version: '6.0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: railties
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '6.0'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '6.0'
55
68
  - !ruby/object:Gem::Dependency
56
69
  name: countries
57
70
  requirement: !ruby/object:Gem::Requirement
@@ -116,7 +129,6 @@ executables: []
116
129
  extensions: []
117
130
  extra_rdoc_files: []
118
131
  files:
119
- - ".DS_Store"
120
132
  - CHANGELOG.md
121
133
  - Gemfile
122
134
  - LICENSE.md
@@ -233,7 +245,6 @@ licenses:
233
245
  metadata:
234
246
  homepage_uri: https://github.com/ahoshaiyan/mini-defender
235
247
  source_code_uri: https://github.com/ahoshaiyan/mini-defender
236
- post_install_message:
237
248
  rdoc_options: []
238
249
  require_paths:
239
250
  - lib
@@ -248,8 +259,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
248
259
  - !ruby/object:Gem::Version
249
260
  version: '0'
250
261
  requirements: []
251
- rubygems_version: 3.5.3
252
- signing_key:
262
+ rubygems_version: 3.6.5
253
263
  specification_version: 4
254
264
  summary: A small and efficient validation library for Rails and anything that uses
255
265
  Ruby.
data/.DS_Store DELETED
Binary file