hash_validator 1.2.0 → 2.0.1

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.
Files changed (75) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ruby.yml +6 -1
  3. data/.rubocop.yml +340 -0
  4. data/Gemfile +3 -1
  5. data/README.md +175 -13
  6. data/Rakefile +6 -4
  7. data/hash_validator.gemspec +11 -5
  8. data/lib/hash_validator/base.rb +2 -0
  9. data/lib/hash_validator/configuration.rb +18 -0
  10. data/lib/hash_validator/validations/many.rb +2 -0
  11. data/lib/hash_validator/validations/multiple.rb +2 -0
  12. data/lib/hash_validator/validations/optional.rb +2 -0
  13. data/lib/hash_validator/validations.rb +5 -3
  14. data/lib/hash_validator/validators/alpha_validator.rb +8 -14
  15. data/lib/hash_validator/validators/alphanumeric_validator.rb +8 -14
  16. data/lib/hash_validator/validators/array_validator.rb +45 -49
  17. data/lib/hash_validator/validators/base.rb +31 -4
  18. data/lib/hash_validator/validators/boolean_validator.rb +6 -6
  19. data/lib/hash_validator/validators/class_validator.rb +4 -2
  20. data/lib/hash_validator/validators/digits_validator.rb +8 -14
  21. data/lib/hash_validator/validators/dynamic_func_validator.rb +26 -0
  22. data/lib/hash_validator/validators/dynamic_pattern_validator.rb +25 -0
  23. data/lib/hash_validator/validators/email_validator.rb +8 -8
  24. data/lib/hash_validator/validators/enumerable_validator.rb +8 -8
  25. data/lib/hash_validator/validators/hash_validator.rb +7 -5
  26. data/lib/hash_validator/validators/hex_color_validator.rb +8 -14
  27. data/lib/hash_validator/validators/ip_validator.rb +24 -0
  28. data/lib/hash_validator/validators/ipv4_validator.rb +20 -0
  29. data/lib/hash_validator/validators/ipv6_validator.rb +24 -0
  30. data/lib/hash_validator/validators/json_validator.rb +9 -14
  31. data/lib/hash_validator/validators/lambda_validator.rb +9 -10
  32. data/lib/hash_validator/validators/many_validator.rb +6 -4
  33. data/lib/hash_validator/validators/multiple_validator.rb +5 -3
  34. data/lib/hash_validator/validators/optional_validator.rb +4 -2
  35. data/lib/hash_validator/validators/presence_validator.rb +8 -8
  36. data/lib/hash_validator/validators/regex_validator.rb +8 -8
  37. data/lib/hash_validator/validators/simple_type_validators.rb +4 -2
  38. data/lib/hash_validator/validators/simple_validator.rb +4 -4
  39. data/lib/hash_validator/validators/url_validator.rb +9 -14
  40. data/lib/hash_validator/validators.rb +63 -25
  41. data/lib/hash_validator/version.rb +3 -1
  42. data/lib/hash_validator.rb +7 -4
  43. data/spec/configuration_spec.rb +191 -0
  44. data/spec/hash_validator_spec.rb +135 -116
  45. data/spec/hash_validator_spec_helper.rb +2 -0
  46. data/spec/spec_helper.rb +14 -4
  47. data/spec/validators/alpha_validator_spec.rb +43 -41
  48. data/spec/validators/alphanumeric_validator_spec.rb +44 -42
  49. data/spec/validators/array_spec.rb +102 -47
  50. data/spec/validators/base_spec.rb +25 -10
  51. data/spec/validators/boolean_spec.rb +15 -13
  52. data/spec/validators/class_spec.rb +20 -18
  53. data/spec/validators/digits_validator_spec.rb +46 -44
  54. data/spec/validators/dynamic_func_validator_spec.rb +254 -0
  55. data/spec/validators/dynamic_pattern_validator_spec.rb +152 -0
  56. data/spec/validators/email_spec.rb +15 -13
  57. data/spec/validators/hash_validator_spec.rb +39 -37
  58. data/spec/validators/hex_color_validator_spec.rb +49 -47
  59. data/spec/validators/in_enumerable_spec.rb +32 -30
  60. data/spec/validators/ip_validator_spec.rb +107 -0
  61. data/spec/validators/ipv4_validator_spec.rb +101 -0
  62. data/spec/validators/ipv6_validator_spec.rb +101 -0
  63. data/spec/validators/json_validator_spec.rb +38 -36
  64. data/spec/validators/lambda_spec.rb +20 -18
  65. data/spec/validators/many_spec.rb +25 -23
  66. data/spec/validators/multiple_spec.rb +13 -11
  67. data/spec/validators/optional_spec.rb +22 -20
  68. data/spec/validators/presence_spec.rb +16 -14
  69. data/spec/validators/regexp_spec.rb +14 -12
  70. data/spec/validators/simple_spec.rb +17 -15
  71. data/spec/validators/simple_types_spec.rb +21 -19
  72. data/spec/validators/url_validator_spec.rb +34 -32
  73. data/spec/validators/user_defined_spec.rb +31 -29
  74. metadata +77 -3
  75. data/Plan.md +0 -309
@@ -1,33 +1,35 @@
1
- require 'spec_helper'
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
2
4
 
3
5
  describe HashValidator::Validator::SimpleValidator do
4
- describe '#initialize' do
5
- it 'accepts blocks with one argument' do
6
+ describe "#initialize" do
7
+ it "accepts blocks with one argument" do
6
8
  expect {
7
- HashValidator::Validator::SimpleValidator.new('name', lambda { |a| true })
9
+ HashValidator::Validator::SimpleValidator.new("name", lambda { |a| true })
8
10
  }.to_not raise_error
9
11
  end
10
12
 
11
- it 'does not accept blocks with no arguments' do
13
+ it "does not accept blocks with no arguments" do
12
14
  expect {
13
- HashValidator::Validator::SimpleValidator.new('name', lambda { true })
14
- }.to raise_error(StandardError, 'lambda should take only one argument - passed lambda takes 0')
15
+ HashValidator::Validator::SimpleValidator.new("name", lambda { true })
16
+ }.to raise_error(StandardError, "lambda should take only one argument - passed lambda takes 0")
15
17
  end
16
18
 
17
- it 'does not accept blocks with two arguments' do
19
+ it "does not accept blocks with two arguments" do
18
20
  expect {
19
- HashValidator::Validator::SimpleValidator.new('name', lambda { |a,b| true })
20
- }.to raise_error(StandardError, 'lambda should take only one argument - passed lambda takes 2')
21
+ HashValidator::Validator::SimpleValidator.new("name", lambda { |a, b| true })
22
+ }.to raise_error(StandardError, "lambda should take only one argument - passed lambda takes 2")
21
23
  end
22
24
  end
23
25
 
24
- describe '#validate' do
26
+ describe "#validate" do
25
27
  # Lambda that accepts strings that are 4 characters or shorter
26
28
  let(:short_string_lambda) { lambda { |v| v.is_a?(String) && v.size < 5 } }
27
- let(:short_string_validator) { HashValidator::Validator::SimpleValidator.new('short_string', short_string_lambda) }
29
+ let(:short_string_validator) { HashValidator::Validator::SimpleValidator.new("short_string", short_string_lambda) }
28
30
  let(:errors) { Hash.new }
29
31
 
30
- [ '', '1', '12', '123', '1234' ].each do |value|
32
+ [ "", "1", "12", "123", "1234" ].each do |value|
31
33
  it "validates the string '#{value}'" do
32
34
  short_string_validator.validate(:key, value, {}, errors)
33
35
 
@@ -35,11 +37,11 @@ describe HashValidator::Validator::SimpleValidator do
35
37
  end
36
38
  end
37
39
 
38
- [ nil, '12345', '123456', 123, 123456, Time.now, (1..5) ].each do |value|
40
+ [ nil, "12345", "123456", 123, 123456, Time.now, (1..5) ].each do |value|
39
41
  it "does not validate bad value '#{value}'" do
40
42
  short_string_validator.validate(:key, value, {}, errors)
41
43
 
42
- expect(errors).to eq({ key: 'short_string required' })
44
+ expect(errors).to eq({ key: "short_string required" })
43
45
  end
44
46
  end
45
47
  end
@@ -1,57 +1,59 @@
1
- require 'spec_helper'
1
+ # frozen_string_literal: true
2
2
 
3
- describe 'Simple validator types' do
3
+ require "spec_helper"
4
+
5
+ describe "Simple validator types" do
4
6
  let(:errors) { Hash.new }
5
7
 
6
8
  # Simple types
7
9
  {
8
10
  array: {
9
- valid: [ [], [1], ['foo'], [1,['foo'],Time.now] ],
10
- invalid: [ nil, '', 123, '123', Time.now, '[1]' ]
11
+ valid: [ [], [1], ["foo"], [1, ["foo"], Time.now] ],
12
+ invalid: [ nil, "", 123, "123", Time.now, "[1]" ]
11
13
  },
12
14
  complex: {
13
- valid: [ Complex(1), Complex(2, 3), Complex('2/3+3/4i'), 0.3.to_c ],
14
- invalid: [ nil, '', 123, '123', Time.now, '[1]', [1], '2/3+3/4i', Rational(2, 3) ]
15
+ valid: [ Complex(1), Complex(2, 3), Complex("2/3+3/4i"), 0.3.to_c ],
16
+ invalid: [ nil, "", 123, "123", Time.now, "[1]", [1], "2/3+3/4i", Rational(2, 3) ]
15
17
  },
16
18
  enumerable: {
17
19
  valid: [ [], [ 1, 2, 3 ], 1..Float::INFINITY ],
18
- invalid: [ nil, '', 123, '123', Time.now, Float::INFINITY ]
20
+ invalid: [ nil, "", 123, "123", Time.now, Float::INFINITY ]
19
21
  },
20
22
  float: {
21
23
  valid: [ 0.0, 1.1, 1.23, Float::INFINITY, Float::EPSILON ],
22
- invalid: [ nil, '', 0, 123, '123', Time.now, '[1]', '2013-03-04' ]
24
+ invalid: [ nil, "", 0, 123, "123", Time.now, "[1]", "2013-03-04" ]
23
25
  },
24
26
  integer: {
25
27
  valid: [ 0, -1000000, 1000000 ],
26
- invalid: [ nil, '', 1.1, '123', Time.now, '[1]', '2013-03-04' ]
28
+ invalid: [ nil, "", 1.1, "123", Time.now, "[1]", "2013-03-04" ]
27
29
  },
28
30
  numeric: {
29
31
  valid: [ 0, 123, 123.45 ],
30
- invalid: [ nil, '', '123', Time.now ]
32
+ invalid: [ nil, "", "123", Time.now ]
31
33
  },
32
34
  range: {
33
- valid: [ 0..10, 'a'..'z', 5..0 ],
34
- invalid: [ nil, '', '123', Time.now ]
35
+ valid: [ 0..10, "a".."z", 5..0 ],
36
+ invalid: [ nil, "", "123", Time.now ]
35
37
  },
36
38
  rational: {
37
39
  valid: [ Rational(1), Rational(2, 3), 3.to_r ],
38
- invalid: [ nil, '', 123, '123', Time.now, '[1]', [1], Complex(2, 3) ]
40
+ invalid: [ nil, "", 123, "123", Time.now, "[1]", [1], Complex(2, 3) ]
39
41
  },
40
42
  regexp: {
41
- valid: [ /[a-z]+/, //, //i, Regexp.new('.*') ],
42
- invalid: [ nil, '', 123, '123', Time.now, '.*' ]
43
+ valid: [ /[a-z]+/, //, //i, Regexp.new(".*") ],
44
+ invalid: [ nil, "", 123, "123", Time.now, ".*" ]
43
45
  },
44
46
  string: {
45
- valid: [ '', 'Hello World', '12345' ],
47
+ valid: [ "", "Hello World", "12345" ],
46
48
  invalid: [ nil, 12345, Time.now ]
47
49
  },
48
50
  symbol: {
49
- valid: [ :foo, :'', 'bar'.to_sym ],
50
- invalid: [ nil, '', 1.1, '123', Time.now, '[1]', '2013-03-04' ]
51
+ valid: [ :foo, :'', "bar".to_sym ],
52
+ invalid: [ nil, "", 1.1, "123", Time.now, "[1]", "2013-03-04" ]
51
53
  },
52
54
  time: {
53
55
  valid: [ Time.now ],
54
- invalid: [ nil, '', 123, '123', "#{Time.now}" ]
56
+ invalid: [ nil, "", 123, "123", "#{Time.now}" ]
55
57
  }
56
58
  }.each do |type, data|
57
59
  describe type do
@@ -1,75 +1,77 @@
1
- require 'spec_helper'
1
+ # frozen_string_literal: true
2
+
3
+ require "spec_helper"
2
4
 
3
5
  describe HashValidator::Validator::UrlValidator do
4
6
  let(:validator) { HashValidator::Validator::UrlValidator.new }
5
7
 
6
- context 'valid URLs' do
7
- it 'validates http URLs' do
8
+ context "valid URLs" do
9
+ it "validates http URLs" do
8
10
  errors = {}
9
- validator.validate('key', 'http://example.com', {}, errors)
11
+ validator.validate("key", "http://example.com", {}, errors)
10
12
  expect(errors).to be_empty
11
13
  end
12
14
 
13
- it 'validates https URLs' do
15
+ it "validates https URLs" do
14
16
  errors = {}
15
- validator.validate('key', 'https://example.com', {}, errors)
17
+ validator.validate("key", "https://example.com", {}, errors)
16
18
  expect(errors).to be_empty
17
19
  end
18
20
 
19
- it 'validates ftp URLs' do
21
+ it "validates ftp URLs" do
20
22
  errors = {}
21
- validator.validate('key', 'ftp://ftp.example.com', {}, errors)
23
+ validator.validate("key", "ftp://ftp.example.com", {}, errors)
22
24
  expect(errors).to be_empty
23
25
  end
24
26
 
25
- it 'validates URLs with paths' do
27
+ it "validates URLs with paths" do
26
28
  errors = {}
27
- validator.validate('key', 'https://example.com/path/to/resource', {}, errors)
29
+ validator.validate("key", "https://example.com/path/to/resource", {}, errors)
28
30
  expect(errors).to be_empty
29
31
  end
30
32
 
31
- it 'validates URLs with query parameters' do
33
+ it "validates URLs with query parameters" do
32
34
  errors = {}
33
- validator.validate('key', 'https://example.com/search?q=test&page=1', {}, errors)
35
+ validator.validate("key", "https://example.com/search?q=test&page=1", {}, errors)
34
36
  expect(errors).to be_empty
35
37
  end
36
38
  end
37
39
 
38
- context 'invalid URLs' do
39
- it 'rejects non-string values' do
40
+ context "invalid URLs" do
41
+ it "rejects non-string values" do
40
42
  errors = {}
41
- validator.validate('key', 123, {}, errors)
42
- expect(errors['key']).to eq('is not a valid URL')
43
+ validator.validate("key", 123, {}, errors)
44
+ expect(errors["key"]).to eq("is not a valid URL")
43
45
  end
44
46
 
45
- it 'rejects nil values' do
47
+ it "rejects nil values" do
46
48
  errors = {}
47
- validator.validate('key', nil, {}, errors)
48
- expect(errors['key']).to eq('is not a valid URL')
49
+ validator.validate("key", nil, {}, errors)
50
+ expect(errors["key"]).to eq("is not a valid URL")
49
51
  end
50
52
 
51
- it 'rejects malformed URLs' do
53
+ it "rejects malformed URLs" do
52
54
  errors = {}
53
- validator.validate('key', 'not a url', {}, errors)
54
- expect(errors['key']).to eq('is not a valid URL')
55
+ validator.validate("key", "not a url", {}, errors)
56
+ expect(errors["key"]).to eq("is not a valid URL")
55
57
  end
56
58
 
57
- it 'rejects URLs without schemes' do
59
+ it "rejects URLs without schemes" do
58
60
  errors = {}
59
- validator.validate('key', 'example.com', {}, errors)
60
- expect(errors['key']).to eq('is not a valid URL')
61
+ validator.validate("key", "example.com", {}, errors)
62
+ expect(errors["key"]).to eq("is not a valid URL")
61
63
  end
62
64
 
63
- it 'rejects unsupported schemes' do
65
+ it "rejects unsupported schemes" do
64
66
  errors = {}
65
- validator.validate('key', 'mailto:test@example.com', {}, errors)
66
- expect(errors['key']).to eq('is not a valid URL')
67
+ validator.validate("key", "mailto:test@example.com", {}, errors)
68
+ expect(errors["key"]).to eq("is not a valid URL")
67
69
  end
68
70
 
69
- it 'rejects empty strings' do
71
+ it "rejects empty strings" do
70
72
  errors = {}
71
- validator.validate('key', '', {}, errors)
72
- expect(errors['key']).to eq('is not a valid URL')
73
+ validator.validate("key", "", {}, errors)
74
+ expect(errors["key"]).to eq("is not a valid URL")
73
75
  end
74
76
  end
75
- end
77
+ end
@@ -1,17 +1,19 @@
1
- require 'spec_helper'
1
+ # frozen_string_literal: true
2
2
 
3
- describe 'User-defined validator' do
3
+ require "spec_helper"
4
+
5
+ describe "User-defined validator" do
4
6
  let(:validator) do
5
7
  unless defined?(HashValidator::Validator::OddValidator)
6
8
  # Define our custom validator
7
9
  class HashValidator::Validator::OddValidator < HashValidator::Validator::Base
8
10
  def initialize
9
- super('odd')
11
+ super("odd")
10
12
  end
11
13
 
12
14
  def validate(key, value, validations, errors)
13
15
  unless value.is_a?(Integer) && value.odd?
14
- errors[key] = presence_error_message
16
+ errors[key] = error_message
15
17
  end
16
18
  end
17
19
  end
@@ -23,73 +25,73 @@ describe 'User-defined validator' do
23
25
  let(:errors) { Hash.new }
24
26
 
25
27
 
26
- describe '#should_validate?' do
28
+ describe "#should_validate?" do
27
29
  it 'validates the name "odd"' do
28
- expect(validator.should_validate?('odd')).to eq true
30
+ expect(validator.should_validate?("odd")).to eq true
29
31
  end
30
32
 
31
- it 'does not validate other names' do
32
- expect(validator.should_validate?('string')).to eq false
33
- expect(validator.should_validate?('array')).to eq false
33
+ it "does not validate other names" do
34
+ expect(validator.should_validate?("string")).to eq false
35
+ expect(validator.should_validate?("array")).to eq false
34
36
  expect(validator.should_validate?(nil)).to eq false
35
37
  end
36
38
  end
37
39
 
38
- describe '#validate' do
39
- it 'validates odd integers with true' do
40
+ describe "#validate" do
41
+ it "validates odd integers with true" do
40
42
  validator.validate(:key, 1, {}, errors)
41
43
 
42
44
  expect(errors).to be_empty
43
45
  end
44
46
 
45
- it 'validates even integers with errrors' do
47
+ it "validates even integers with errrors" do
46
48
  validator.validate(:key, 2, {}, errors)
47
49
 
48
50
  expect(errors).not_to be_empty
49
- expect(errors).to eq({ key: 'odd required' })
51
+ expect(errors).to eq({ key: "odd required" })
50
52
  end
51
53
 
52
- it 'validates even floats with errrors' do
54
+ it "validates even floats with errrors" do
53
55
  validator.validate(:key, 2.0, {}, errors)
54
56
 
55
57
  expect(errors).not_to be_empty
56
- expect(errors).to eq({ key: 'odd required' })
58
+ expect(errors).to eq({ key: "odd required" })
57
59
  end
58
60
 
59
- it 'validates odd floats with errrors' do
61
+ it "validates odd floats with errrors" do
60
62
  validator.validate(:key, 1.0, {}, errors)
61
63
 
62
64
  expect(errors).not_to be_empty
63
- expect(errors).to eq({ key: 'odd required' })
65
+ expect(errors).to eq({ key: "odd required" })
64
66
  end
65
67
 
66
- it 'validates an odd integer string with errrors' do
67
- validator.validate(:key, '1', {}, errors)
68
+ it "validates an odd integer string with errrors" do
69
+ validator.validate(:key, "1", {}, errors)
68
70
 
69
71
  expect(errors).not_to be_empty
70
- expect(errors).to eq({ key: 'odd required' })
72
+ expect(errors).to eq({ key: "odd required" })
71
73
  end
72
74
  end
73
75
 
74
- describe 'Integrating with the entire validation system' do
75
- before { HashValidator.append_validator(validator) rescue nil } # rescue to prevent: validators need to have unique names
76
+ describe "Integrating with the entire validation system" do
77
+ before { HashValidator.add_validator(validator) rescue nil } # rescue to prevent: validators need to have unique names
76
78
 
77
- it 'can be looked up using #validator_for' do
78
- expect(HashValidator.validator_for('odd')).to be_a_kind_of(HashValidator::Validator::OddValidator)
79
+ it "can be looked up using #validator_for" do
80
+ expect(HashValidator.validator_for("odd")).to be_a_kind_of(HashValidator::Validator::OddValidator)
79
81
  end
80
82
 
81
- it 'can be used in validations - test 1' do
82
- validator = HashValidator.validate({ age: 27 }, { age: 'odd' })
83
+ it "can be used in validations - test 1" do
84
+ validator = HashValidator.validate({ age: 27 }, { age: "odd" })
83
85
 
84
86
  expect(validator.valid?).to eq true
85
87
  expect(validator.errors).to be_empty
86
88
  end
87
89
 
88
- it 'can be used in validations - test 2' do
89
- validator = HashValidator.validate({ age: 40 }, { age: 'odd' })
90
+ it "can be used in validations - test 2" do
91
+ validator = HashValidator.validate({ age: 40 }, { age: "odd" })
90
92
 
91
93
  expect(validator.valid?).to eq false
92
- expect(validator.errors).to eq({ age: 'odd required' })
94
+ expect(validator.errors).to eq({ age: "odd required" })
93
95
  end
94
96
  end
95
97
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hash_validator
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 2.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Brooks
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-08-20 00:00:00.000000000 Z
11
+ date: 2025-08-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -52,6 +52,62 @@ dependencies:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
54
  version: '3.10'
55
+ - !ruby/object:Gem::Dependency
56
+ name: simplecov
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - "~>"
60
+ - !ruby/object:Gem::Version
61
+ version: 0.22.0
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - "~>"
67
+ - !ruby/object:Gem::Version
68
+ version: 0.22.0
69
+ - !ruby/object:Gem::Dependency
70
+ name: rubocop
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.21'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.21'
83
+ - !ruby/object:Gem::Dependency
84
+ name: rubocop-performance
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.25'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '1.25'
97
+ - !ruby/object:Gem::Dependency
98
+ name: rubocop-rspec
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '3.6'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '3.6'
55
111
  description: Ruby library to validate hashes (Hash) against user-defined requirements
56
112
  email:
57
113
  - james@gooddogdesign.com
@@ -62,15 +118,16 @@ files:
62
118
  - ".github/workflows/ruby.yml"
63
119
  - ".gitignore"
64
120
  - ".rspec"
121
+ - ".rubocop.yml"
65
122
  - ".ruby-version"
66
123
  - Gemfile
67
124
  - LICENSE.txt
68
- - Plan.md
69
125
  - README.md
70
126
  - Rakefile
71
127
  - hash_validator.gemspec
72
128
  - lib/hash_validator.rb
73
129
  - lib/hash_validator/base.rb
130
+ - lib/hash_validator/configuration.rb
74
131
  - lib/hash_validator/validations.rb
75
132
  - lib/hash_validator/validations/many.rb
76
133
  - lib/hash_validator/validations/multiple.rb
@@ -83,10 +140,15 @@ files:
83
140
  - lib/hash_validator/validators/boolean_validator.rb
84
141
  - lib/hash_validator/validators/class_validator.rb
85
142
  - lib/hash_validator/validators/digits_validator.rb
143
+ - lib/hash_validator/validators/dynamic_func_validator.rb
144
+ - lib/hash_validator/validators/dynamic_pattern_validator.rb
86
145
  - lib/hash_validator/validators/email_validator.rb
87
146
  - lib/hash_validator/validators/enumerable_validator.rb
88
147
  - lib/hash_validator/validators/hash_validator.rb
89
148
  - lib/hash_validator/validators/hex_color_validator.rb
149
+ - lib/hash_validator/validators/ip_validator.rb
150
+ - lib/hash_validator/validators/ipv4_validator.rb
151
+ - lib/hash_validator/validators/ipv6_validator.rb
90
152
  - lib/hash_validator/validators/json_validator.rb
91
153
  - lib/hash_validator/validators/lambda_validator.rb
92
154
  - lib/hash_validator/validators/many_validator.rb
@@ -98,6 +160,7 @@ files:
98
160
  - lib/hash_validator/validators/simple_validator.rb
99
161
  - lib/hash_validator/validators/url_validator.rb
100
162
  - lib/hash_validator/version.rb
163
+ - spec/configuration_spec.rb
101
164
  - spec/hash_validator_spec.rb
102
165
  - spec/hash_validator_spec_helper.rb
103
166
  - spec/spec_helper.rb
@@ -108,10 +171,15 @@ files:
108
171
  - spec/validators/boolean_spec.rb
109
172
  - spec/validators/class_spec.rb
110
173
  - spec/validators/digits_validator_spec.rb
174
+ - spec/validators/dynamic_func_validator_spec.rb
175
+ - spec/validators/dynamic_pattern_validator_spec.rb
111
176
  - spec/validators/email_spec.rb
112
177
  - spec/validators/hash_validator_spec.rb
113
178
  - spec/validators/hex_color_validator_spec.rb
114
179
  - spec/validators/in_enumerable_spec.rb
180
+ - spec/validators/ip_validator_spec.rb
181
+ - spec/validators/ipv4_validator_spec.rb
182
+ - spec/validators/ipv6_validator_spec.rb
115
183
  - spec/validators/json_validator_spec.rb
116
184
  - spec/validators/lambda_spec.rb
117
185
  - spec/validators/many_spec.rb
@@ -147,6 +215,7 @@ signing_key:
147
215
  specification_version: 4
148
216
  summary: Ruby library to validate hashes (Hash) against user-defined requirements
149
217
  test_files:
218
+ - spec/configuration_spec.rb
150
219
  - spec/hash_validator_spec.rb
151
220
  - spec/hash_validator_spec_helper.rb
152
221
  - spec/spec_helper.rb
@@ -157,10 +226,15 @@ test_files:
157
226
  - spec/validators/boolean_spec.rb
158
227
  - spec/validators/class_spec.rb
159
228
  - spec/validators/digits_validator_spec.rb
229
+ - spec/validators/dynamic_func_validator_spec.rb
230
+ - spec/validators/dynamic_pattern_validator_spec.rb
160
231
  - spec/validators/email_spec.rb
161
232
  - spec/validators/hash_validator_spec.rb
162
233
  - spec/validators/hex_color_validator_spec.rb
163
234
  - spec/validators/in_enumerable_spec.rb
235
+ - spec/validators/ip_validator_spec.rb
236
+ - spec/validators/ipv4_validator_spec.rb
237
+ - spec/validators/ipv6_validator_spec.rb
164
238
  - spec/validators/json_validator_spec.rb
165
239
  - spec/validators/lambda_spec.rb
166
240
  - spec/validators/many_spec.rb