mini_defender 0.5.1 → 0.5.2

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: 36f0ca2e9d174da94e991c9eed6300ae0f0315ab57b3d9372921726261318c67
4
- data.tar.gz: a4f29b8f5558008c1f5b992722a8ab9dd07dbc93d51d7ec288bd3be5e9d1d91b
3
+ metadata.gz: f7eb4878351ebf49bb42e33a10f8fefd34745b4067bdf40b50180792d2883819
4
+ data.tar.gz: 93ec54964db744a7f2f03a7fc23bf96b6458637d94dbfb00c4307a0e5e598964
5
5
  SHA512:
6
- metadata.gz: 885a3ff5f6a337246c9b47e6ac21b0e9dc21067a11c49d7af2d9135d66f6ab878a620b9f73cafa5b1316d5edc2d74f709f924e37309bbe74bb596500abe8348b
7
- data.tar.gz: 3d6a38389f37816a4b6ebbadd7700b6c628e7011c42dfbe0a07ee907f0d354b9b7aaed18179ad97c8350ea01948966ee47182b40e5630370761a5487c58fbe97
6
+ metadata.gz: a04dc7d2a819a0d3f8e443342900bd29db0c7e9b730128ff7d8f266f7853e52079166903997f660ef87c26c3965dd689c229bd5e533a0ff824debd3548f65417
7
+ data.tar.gz: cd0109845a3f6f2ddc22c23448856124384554b6e3bbc75f1d952773c589797a421c1f7e04da15ed3461713f65ee436a8c102776ff0377dbbdeecc96da746196
@@ -16,6 +16,13 @@ class MiniDefender::Rule
16
16
  true
17
17
  end
18
18
 
19
+ # Priority is used to sort rules in a rule set to allow rules to validate data
20
+ # before rules that will radically change data
21
+ # @return [Integer]
22
+ def priority
23
+ 100
24
+ end
25
+
19
26
  # @param [MiniDefender::Validator] validator
20
27
  # @return [Boolean]
21
28
  def implicit?(validator)
@@ -13,6 +13,10 @@ class MiniDefender::Rules::Array < MiniDefender::Rule
13
13
  new(args[0] || 'none')
14
14
  end
15
15
 
16
+ def priority
17
+ 500
18
+ end
19
+
16
20
  def coerce(value)
17
21
  @data_mode == 'all' ? value : []
18
22
  end
@@ -19,6 +19,10 @@ class MiniDefender::Rules::Hash < MiniDefender::Rule
19
19
  )
20
20
  end
21
21
 
22
+ def priority
23
+ 500
24
+ end
25
+
22
26
  def coerce(value)
23
27
  @data_mode == 'all' ? value : {}
24
28
  end
@@ -11,16 +11,23 @@ module MiniDefender
11
11
  end
12
12
 
13
13
  def init_set(rule_set)
14
- rule_set = rule_set.split('|') if rule_set.is_a?(String)
15
- raise ArgumentError, 'Rule set must be a string or an array' unless rule_set.is_a?(Array)
14
+ if rule_set.is_a?(String)
15
+ rule_set = rule_set.split('|')
16
+ end
17
+
18
+ unless rule_set.is_a?(Array)
19
+ raise ArgumentError, 'Rule set must be a string or an array'
20
+ end
16
21
 
17
- rule_set.map do |rule|
22
+ rule_set = rule_set.map do |rule|
18
23
  unless rule.is_a?(String) || rule.is_a?(Rule)
19
24
  raise ArgumentError, 'Rule must be a string or an instance of MiniDefender::Rule'
20
25
  end
21
26
 
22
27
  rule.is_a?(String) ? init_rule(rule) : rule
23
28
  end
29
+
30
+ rule_set.sort_by! { |r| r.priority }
24
31
  end
25
32
 
26
33
  def init_rule(signature)
@@ -62,7 +62,7 @@ module MiniDefender
62
62
 
63
63
  value_included &= !rule.excluded?(self)
64
64
 
65
- if rule.passes?(k, value, self)
65
+ if rule.passes?(k, coerced, self)
66
66
  coerced = rule.coerce(coerced)
67
67
  force_coerce = rule.force_coerce?
68
68
  else
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module MiniDefender
4
- VERSION = "0.5.1"
4
+ VERSION = "0.5.2"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mini_defender
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.1
4
+ version: 0.5.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ali Alhoshaiyan
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-01-17 00:00:00.000000000 Z
11
+ date: 2024-01-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport