be_valid 0.1.7 → 0.1.8

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: 7edccd354585b1c23c1b623e936e48a442e63084ffdb50ec723c8e6c484d88dc
4
- data.tar.gz: 8f1a9f325cf407a462749673476eedba4257df10d9a58520bfa686b31d9cadda
3
+ metadata.gz: '09ad2711308c18cd301eecd01ca9caf828c81909f9be6597c96a6353513ba4b4'
4
+ data.tar.gz: 79cff60db8a311481607f39f89191e84682f6d809e02710908f6aacb535b038f
5
5
  SHA512:
6
- metadata.gz: f870bf1181a47bef15e48054ca0276090a55a9340f93dccb538e6ea94a62e15949c1b47c0c688c3347fa8f51ea6c0cbccfba19c51c23480acdb440f2c15d53b7
7
- data.tar.gz: 36de4519138b8e10897ac761b99c71fb3b7726808ff11e3ef2ad5bc94cff19852dea31b8d4dedf835b3c025598ed1a832b08941053ba7adf1ebf5a3587d899a1
6
+ metadata.gz: 35c8e9420efe9154f461af5857a9e2c8bd81ef1cacd525b1be4f176b39d51b4e7ebcabade66152c308429b8b653dd76aeb230f11c8a5e80bde24661a7a8e20b4
7
+ data.tar.gz: a4475627627e9d0338f7117254b9dc3785de4b8500b5e960900eb90069e27347792dc8f7e2c232c00a36966fd3388ea5bd05e30acfd1effd30f423bac8b57147
@@ -11,7 +11,7 @@ jobs:
11
11
  runs-on: ubuntu-latest
12
12
  strategy:
13
13
  matrix:
14
- ruby-version: ['2.6', '2.7', '3.0']
14
+ ruby-version: ['3.0']
15
15
 
16
16
  steps:
17
17
  - uses: actions/checkout@v2
data/Gemfile.lock CHANGED
@@ -1,31 +1,32 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- be_valid (0.1.6)
4
+ be_valid (0.1.8)
5
+ activemodel (~> 6.1)
5
6
 
6
7
  GEM
7
8
  remote: https://rubygems.org/
8
9
  specs:
9
- activemodel (6.1.3.2)
10
- activesupport (= 6.1.3.2)
11
- activerecord (6.1.3.2)
12
- activemodel (= 6.1.3.2)
13
- activesupport (= 6.1.3.2)
14
- activesupport (6.1.3.2)
10
+ activemodel (6.1.4.1)
11
+ activesupport (= 6.1.4.1)
12
+ activerecord (6.1.4.1)
13
+ activemodel (= 6.1.4.1)
14
+ activesupport (= 6.1.4.1)
15
+ activesupport (6.1.4.1)
15
16
  concurrent-ruby (~> 1.0, >= 1.0.2)
16
17
  i18n (>= 1.6, < 2)
17
18
  minitest (>= 5.1)
18
19
  tzinfo (~> 2.0)
19
20
  zeitwerk (~> 2.3)
20
- concurrent-ruby (1.1.8)
21
+ concurrent-ruby (1.1.9)
21
22
  i18n (1.8.10)
22
23
  concurrent-ruby (~> 1.0)
23
24
  minitest (5.14.4)
24
- rake (10.5.0)
25
+ rake (13.0.6)
25
26
  sqlite3 (1.4.2)
26
27
  tzinfo (2.0.4)
27
28
  concurrent-ruby (~> 1.0)
28
- zeitwerk (2.4.2)
29
+ zeitwerk (2.5.1)
29
30
 
30
31
  PLATFORMS
31
32
  ruby
@@ -35,8 +36,8 @@ DEPENDENCIES
35
36
  be_valid!
36
37
  bundler (~> 2)
37
38
  minitest (~> 5.0)
38
- rake (~> 10.0)
39
+ rake (~> 13.0)
39
40
  sqlite3 (~> 1.4)
40
41
 
41
42
  BUNDLED WITH
42
- 2.2.17
43
+ 2.2.22
data/be_valid.gemspec CHANGED
@@ -23,10 +23,12 @@ Gem::Specification.new do |spec|
23
23
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
24
24
  spec.require_paths = ["lib"]
25
25
 
26
- spec.required_ruby_version = '>= 2.3'
26
+ spec.required_ruby_version = '>= 3.0'
27
+
28
+ spec.add_dependency "activemodel", "~> 6.1"
27
29
 
28
30
  spec.add_development_dependency "bundler", "~> 2"
29
- spec.add_development_dependency "rake", "~> 10.0"
31
+ spec.add_development_dependency "rake", "~> 13.0"
30
32
  spec.add_development_dependency "minitest", "~> 5.0"
31
33
  spec.add_development_dependency "activerecord", "~> 6"
32
34
  spec.add_development_dependency "sqlite3", "~> 1.4"
@@ -1,3 +1,3 @@
1
1
  module BeValid
2
- VERSION = "0.1.7"
2
+ VERSION = "0.1.8"
3
3
  end
data/lib/be_valid.rb CHANGED
@@ -1,9 +1,21 @@
1
- require 'be_valid/be_valid'
2
-
3
- begin
1
+ module BeValid
4
2
  require 'validators/date_validator'
5
3
  require 'validators/must_be_validator'
6
- rescue
7
- 'unable to load be_valid validator'
8
- nil
4
+
5
+ def self.config
6
+ @@config ||= Configuration.new
7
+ end
8
+
9
+ def self.configure
10
+ self.config ||= Configuration.new
11
+ yield(config)
12
+ end
13
+
14
+ class Configuration
15
+ attr_accessor :rules
16
+
17
+ def initialize
18
+ @rules = {}
19
+ end
20
+ end
9
21
  end
@@ -1,3 +1,5 @@
1
+ require 'active_model'
2
+
1
3
  class DateValidator < ActiveModel::EachValidator
2
4
 
3
5
  # https://stackoverflow.com/questions/28538080/rails-validate-dates-in-model-before-type-cast
@@ -6,23 +8,24 @@ class DateValidator < ActiveModel::EachValidator
6
8
 
7
9
  @error_hash = options[:error_level].present? ? record.send(options[:error_level]) : record.errors
8
10
 
9
- original_value = record.read_attribute_before_type_cast( attribute )
11
+ original_value = value
12
+ original_value = record.read_attribute_before_type_cast( attribute ) rescue nil # only in rails
10
13
  # dont display date format error unless date could not be parsed
11
14
  if value.nil?
12
15
  # if blank date was given it's still not a format issue, still show message if desired
13
16
  return if original_value.blank? && options[:allow_blank]
14
17
 
15
18
  # display helpful date format validation message with original value
16
- message = options[:time] ? ": #{original_value} is not a valid value. Value must be a date in YYYY-MM-DD or YYYY-MM-DD HH:MM:SS format." : ": #{original_value} is not a valid value. Value must be a date in YYYY-MM-DD."
17
- @error_hash.add(attribute, (options[:message] || message), rule_name: options[:rule_name])
19
+ message = options[:time] ? ": #{original_value} is not a valid value. Value must be a date in YYYY-MM-DD or YYYY-MM-DD HH:MM:SS format." : ": #{original_value} is not a valid value. Value must be a date in YYYY-MM-DD format."
20
+ @error_hash.add(attribute, (options[:message] || message))
18
21
  else
19
22
  # handle validation options on valid date instances
20
23
  return unless value.respond_to?(:strftime)
21
24
  if(options[:after] && (after_message = validate_after_option(record, attribute, value, original_value)) != true)
22
- @error_hash.add(attribute, (options[:after_message] || "#{after_message}."), rule_name: options[:rule_name])
25
+ @error_hash.add(attribute, (options[:after_message] || "#{after_message}."))
23
26
  end
24
27
  if(options[:before] && (before_message = validate_before_option(record, attribute, value, original_value)) != true)
25
- @error_hash.add(attribute, (options[:before_message] || "#{before_message}."), rule_name: options[:rule_name])
28
+ @error_hash.add(attribute, (options[:before_message] || "#{before_message}."))
26
29
  end
27
30
  end
28
31
  end
@@ -78,13 +81,11 @@ class DateValidator < ActiveModel::EachValidator
78
81
  record.__send__(option) if record.respond_to?(option)
79
82
  end
80
83
  return unless date.present?
81
- date = date.to_date unless options[:time]
82
- if date.is_a?(Time)
83
- value = value.to_time
84
- elsif date.is_a?(Date)
85
- value = value.to_date
84
+ if options[:time]
85
+ return [date.to_time, value.to_time]
86
+ else
87
+ return [date.to_date, value.to_date]
86
88
  end
87
- [date, value]
88
89
  end
89
90
 
90
91
  end
@@ -1,4 +1,4 @@
1
- require 'active_record'
1
+ require 'active_model'
2
2
 
3
3
  module ActiveModel
4
4
  module Validations
@@ -22,7 +22,8 @@ module ActiveModel
22
22
  raise "Requires at least one comparison operator for attribute." unless (options.keys & REQD_OPTS).length > 0
23
23
  return if options[:rule_name] && BeValid.config.rules&.fetch(options[:rule_name], {})[:disabled]
24
24
 
25
- original_value = record.read_attribute_before_type_cast( attribute )
25
+ original_value = value
26
+ original_value = record.read_attribute_before_type_cast( attribute ) rescue nil # only in rails
26
27
 
27
28
  message = self.class::MESSAGE_PREFIX.dup
28
29
 
@@ -70,13 +71,14 @@ module ActiveModel
70
71
  message << " when "
71
72
  condition_errors = []
72
73
  conditions.each do |field, values|
74
+ field_value = record.send(field)
73
75
  case values
74
76
  when Regexp
75
- return if !values.match?(record[field])
76
- condition_errors << "#{field} = #{record[field]}"
77
+ return if !values.match?(field_value)
78
+ condition_errors << "#{field} = #{field_value}"
77
79
  when Array
78
- return if !values.flatten.include?(record[field])
79
- condition_errors << "#{field} = #{record[field]}"
80
+ return if !values.flatten.include?(field_value)
81
+ condition_errors << "#{field} = #{field_value}"
80
82
  when :blank
81
83
  return unless record.send(field).blank?
82
84
  condition_errors << "#{field} is #{values.to_s.gsub('?', '')}"
@@ -87,8 +89,8 @@ module ActiveModel
87
89
  return if !record.send(field)&.send(values)
88
90
  condition_errors << "#{field} is #{values.to_s.gsub('?', '')}"
89
91
  else
90
- return if values != record[field]
91
- condition_errors << "#{field} = #{record[field]}"
92
+ return if values != field_value
93
+ condition_errors << "#{field} = #{field_value}"
92
94
  end
93
95
  end
94
96
  message << condition_errors.join(' and ')
@@ -106,6 +108,13 @@ module ActiveModel
106
108
 
107
109
  record.send(self.class::ERRORS_METHOD).add(attribute, (options[:message] || "#{message}."), rule_name: options[:rule_name])
108
110
  end
111
+ module ClassMethods
112
+ def validates_must_be_valid(*attr_names)
113
+ validates_with MustBeValidator, _merge_attributes(attr_names)
114
+ end
115
+
116
+ alias_method :validates_must_be, :validates_must_be_valid
117
+ end
109
118
  end
110
119
  end
111
120
  end
metadata CHANGED
@@ -1,15 +1,29 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: be_valid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.7
4
+ version: 0.1.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - John Stewart (johnsinco)
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-08-18 00:00:00.000000000 Z
11
+ date: 2021-11-30 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: activemodel
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '6.1'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '6.1'
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: bundler
15
29
  requirement: !ruby/object:Gem::Requirement
@@ -30,14 +44,14 @@ dependencies:
30
44
  requirements:
31
45
  - - "~>"
32
46
  - !ruby/object:Gem::Version
33
- version: '10.0'
47
+ version: '13.0'
34
48
  type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
52
  - - "~>"
39
53
  - !ruby/object:Gem::Version
40
- version: '10.0'
54
+ version: '13.0'
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: minitest
43
57
  requirement: !ruby/object:Gem::Requirement
@@ -98,7 +112,6 @@ files:
98
112
  - bin/console
99
113
  - bin/setup
100
114
  - lib/be_valid.rb
101
- - lib/be_valid/be_valid.rb
102
115
  - lib/be_valid/version.rb
103
116
  - lib/validators/date_validator.rb
104
117
  - lib/validators/must_be_validator.rb
@@ -114,14 +127,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
114
127
  requirements:
115
128
  - - ">="
116
129
  - !ruby/object:Gem::Version
117
- version: '2.3'
130
+ version: '3.0'
118
131
  required_rubygems_version: !ruby/object:Gem::Requirement
119
132
  requirements:
120
133
  - - ">="
121
134
  - !ruby/object:Gem::Version
122
135
  version: '0'
123
136
  requirements: []
124
- rubygems_version: 3.1.6
137
+ rubygems_version: 3.2.22
125
138
  signing_key:
126
139
  specification_version: 4
127
140
  summary: Custom Ruby on Rails Validation library supporting 'conditional' validation
@@ -1,18 +0,0 @@
1
- module BeValid
2
- def self.config
3
- @@config ||= Configuration.new
4
- end
5
-
6
- def self.configure
7
- self.config ||= Configuration.new
8
- yield(config)
9
- end
10
-
11
- class Configuration
12
- attr_accessor :rules
13
-
14
- def initialize
15
- @rules = {}
16
- end
17
- end
18
- end