more_validators 0.1.3 → 0.2.0

Sign up to get free protection for your applications and to get access to all the features.
data/CHANGELOG CHANGED
@@ -1,8 +1,11 @@
1
+ 0.2.0 - Apr 14th 2011
2
+ * more_validators version >= 0.2.x is now compatible with Rails 3 ONLY
3
+
1
4
  0.1.3 - May 14th 2010
2
- * added allow_blank => true as default behaviour for validators
5
+ * Added allow_blank => true as default behaviour for validators
3
6
 
4
7
  0.1.2 - May 13th 2010
5
- * new validators:
8
+ * New validators:
6
9
  ** validates_as_uf_br
7
10
 
8
11
  0.1.0 - May 12th 2010
data/MIT-LICENSE ADDED
@@ -0,0 +1,20 @@
1
+ Copyright (C) 2011 by Infosimples. http://www.infosimples.com.br/
2
+
3
+ Permission is hereby granted, free of charge, to any person obtaining
4
+ a copy of this software and associated documentation files (the
5
+ "Software"), to deal in the Software without restriction, including
6
+ without limitation the rights to use, copy, modify, merge, publish,
7
+ distribute, sublicense, and/or sell copies of the Software, and to
8
+ permit persons to whom the Software is furnished to do so, subject to
9
+ the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be
12
+ included in all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
15
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
17
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
18
+ LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
19
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
20
+ WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/README.rdoc ADDED
@@ -0,0 +1,99 @@
1
+ == MoreValidators
2
+
3
+ MoreValidators is a Rails gem that provides a series of extra validators.
4
+
5
+ The latest version of this library provides the following validation methods:
6
+
7
+ * validates_as_cep: brazilian postal code validation;
8
+ * validates_as_cnpj: brazilian CNPJ validation;
9
+ * validates_as_cpf: brazilizan CPF validation;
10
+ * validates_as_email: email address validation;
11
+ * validates_as_phonenumber_br: brazilian phone number validation;
12
+ * validates_as_uf_br: brazilian state validation;
13
+ * validates_as_website: website URL validation.
14
+
15
+ Contact us if you have any questions:
16
+ contato@infosimples.com.br
17
+
18
+ == Latest version:
19
+
20
+ Version: 0.2.0
21
+
22
+ == Installation:
23
+
24
+ The latest version of MoreValidators is compatible with Rails 3 ONLY. However, it's possible to use this gem with Rails 2; if that's what you need, follow the installation instructions on the Rails 2 section below.
25
+
26
+ === Rails 3:
27
+
28
+ You can install the latest version of MoreValidators with:
29
+
30
+ gem install more_validators
31
+
32
+ You can add it to your Gemfile:
33
+
34
+ gem 'more_validators'
35
+
36
+ === Rails 2:
37
+
38
+ You can install MoreValidators with:
39
+
40
+ gem install more_validators --version=0.1.3
41
+
42
+ You can add it to your Gemfile:
43
+
44
+ gem 'more_validators', '0.1.3'
45
+
46
+ == Usage:
47
+
48
+ In your model file do something like:
49
+
50
+ class MyClass < ActiveRecord::Base
51
+
52
+ # Email validation
53
+ validates_as_email :email
54
+
55
+ # Brazilian postal code validation
56
+ validates_as_cep :cep, :allow_blank => true
57
+
58
+ # Brazilian phone number validation
59
+ validates_as_phonenumber_br :phonenumber, :allow_nil => true
60
+
61
+ # CPF validation
62
+ validates_as_cpf :cpf
63
+
64
+ # CNPJ validation
65
+ validates_as_cnpj :cnpj :allow_blank => true
66
+
67
+ # Brazilian UF validation
68
+ # Both upcase and downcase are allowed by default
69
+ validates_as_uf_br :uf
70
+
71
+ end
72
+
73
+ == I18n
74
+
75
+ The default error message is "is invalid".
76
+ You can customize this message via Rails I18n defining the key :invalid.
77
+
78
+ === Example
79
+
80
+ Your customized en.yaml file would look like this:
81
+
82
+ en:
83
+ activerecord:
84
+ errors:
85
+ messages:
86
+ invalid: "MY CUSTOM MESSAGE"
87
+
88
+ == Tests:
89
+
90
+ Some tests have been added to each validator.
91
+
92
+ === Maintainers
93
+
94
+ * Rafael Barbolo Lopes (http://github.com/barbolo)
95
+ * Rafael Ivan Garcia (http://github.com/rafaelivan)
96
+
97
+ == License:
98
+
99
+ MIT License. Copyright (C) 2011 by Infosimples. http://www.infosimples.com.br
data/init.rb CHANGED
@@ -1 +1 @@
1
- require 'validates_as_'
1
+ require 'more_validators'
@@ -4,4 +4,4 @@ require 'validates_as_cpf'
4
4
  require 'validates_as_email'
5
5
  require 'validates_as_phonenumber_br'
6
6
  require 'validates_as_website'
7
- require 'validates_as_uf_br'
7
+ require 'validates_as_uf_br'
@@ -1,15 +1,18 @@
1
1
  module ActiveRecord
2
2
  module Validations
3
+
4
+ class CEPValidator < ActiveModel::EachValidator
5
+ def validate_each(record, attribute, value)
6
+ return if not (value.is_a?(String) ? value : value.to_s).match(/\A(\d{5})([-]{0,1})(\d{3})\Z/).nil?
7
+ record.errors.add(attribute,
8
+ I18n.translate('activerecord.errors.messages.invalid', :default => 'invalid'),
9
+ options.merge(:value => value))
10
+ end
11
+ end
12
+
3
13
  module ClassMethods
4
14
  def validates_as_cep(*attr_names)
5
- configuration = {
6
- :message => I18n.translate('activerecord.errors.messages.invalid', :default => 'invalid' ),
7
- :with => /\A(\d{5})([-]{0,1})(\d{3})\Z/,
8
- :allow_nil => true,
9
- :allow_blank => true }
10
- configuration.update(attr_names.pop) if attr_names.last.is_a?(Hash)
11
-
12
- validates_format_of attr_names, configuration
15
+ validates_with CEPValidator, _merge_attributes(attr_names)
13
16
  end
14
17
  end
15
18
  end
@@ -1,71 +1,78 @@
1
- module CNPJ
2
- BLACK_LIST = %w(00000000000000 11111111111111 22222222222222 33333333333333
3
- 44444444444444 55555555555555 66666666666666 77777777777777
4
- 88888888888888 99999999999999)
5
-
6
- def self.valid?(cnpj)
1
+ module ActiveRecord
2
+ module Validations
3
+
4
+ class CNPJValidator < ActiveModel::EachValidator
5
+ @@black_list = %w(00000000000000 11111111111111 22222222222222 33333333333333
6
+ 44444444444444 55555555555555 66666666666666 77777777777777
7
+ 88888888888888 99999999999999)
7
8
 
8
- cnpj = cnpj.to_s
9
+ def validate_each(record, attribute, value)
10
+ return if valid? value
11
+ record.errors.add(attribute,
12
+ I18n.translate('activerecord.errors.messages.invalid', :default => 'invalid'),
13
+ options.merge(:value => value))
14
+ end
15
+
16
+ #
17
+ # Private methods.
18
+ #
19
+ private
20
+
21
+ def valid? cnpj
22
+ begin
23
+ cnpj = (cnpj.is_a?(String) ? cnpj : cnpj.to_s)
24
+ rescue Exception => exc
25
+ return false
26
+ end
9
27
 
10
- # could be 13 or 14 digits or with mask 99.999.999/9999-99
11
- if cnpj !~ /^\d{13,14}$|\d{2}\.\d{3}\.\d{3}\/\d{4}-\d{2}$/
12
- return false
13
- end
28
+ # could be 13 or 14 digits or with mask 99.999.999/9999-99
29
+ if cnpj !~ /^\d{13,14}$|\d{2}\.\d{3}\.\d{3}\/\d{4}-\d{2}$/
30
+ return false
31
+ end
14
32
 
15
- cnpj = cnpj.scan(/\d/).collect(&:to_i)
16
- cnpj.unshift(0) if cnpj.length == 13
33
+ cnpj = cnpj.scan(/\d/).collect(&:to_i)
34
+ cnpj.unshift(0) if cnpj.length == 13
17
35
 
18
- # filter black list
19
- if BLACK_LIST.include? cnpj.join
20
- return false
21
- end
36
+ # filter black list
37
+ if @@black_list.include? cnpj.join
38
+ return false
39
+ end
22
40
 
23
- # calculate first digit
24
- factor = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]
41
+ # calculate first digit
42
+ factor = [5, 4, 3, 2, 9, 8, 7, 6, 5, 4, 3, 2]
25
43
 
26
- sum = (0..11).inject(0) do |sum, i|
27
- sum + cnpj[i] * factor[i]
28
- end
44
+ sum = (0..11).inject(0) do |sum, i|
45
+ sum + cnpj[i] * factor[i]
46
+ end
29
47
 
30
- result = sum % 11
31
- result = result < 2 ? 0 : 11 - result
48
+ result = sum % 11
49
+ result = result < 2 ? 0 : 11 - result
32
50
 
33
- if result != cnpj[12]
34
- return false
35
- end
51
+ if result != cnpj[12]
52
+ return false
53
+ end
36
54
 
37
- # calculate second digit
38
- factor.unshift 6
55
+ # calculate second digit
56
+ factor.unshift 6
39
57
 
40
- sum = (0..12).inject(0) do |sum, i|
41
- sum + cnpj[i] * factor[i]
42
- end
58
+ sum = (0..12).inject(0) do |sum, i|
59
+ sum + cnpj[i] * factor[i]
60
+ end
43
61
 
44
- result = sum % 11
45
- result = result < 2 ? 0 : 11 - result
62
+ result = sum % 11
63
+ result = result < 2 ? 0 : 11 - result
46
64
 
47
- result == cnpj[13]
48
- end
65
+ result == cnpj[13]
66
+ end
67
+
68
+ def invalid? cnpj
69
+ not valid? cnpj
70
+ end
71
+ end
49
72
 
50
- def self.invalid?(cnpj)
51
- !valid?(cnpj)
52
- end
53
- end
54
-
55
- module ActiveRecord
56
- module Validations
57
73
  module ClassMethods
58
74
  def validates_as_cnpj(*attr_names)
59
- configuration = {
60
- :message => I18n.translate('activerecord.errors.messages.invalid', :default => 'invalid' ),
61
- :allow_nil => true,
62
- :allow_blank => true }
63
- configuration.update(attr_names.pop) if attr_names.last.is_a?(Hash)
64
-
65
- validates_each attr_names, configuration do |record, attribute, value|
66
- record.errors.add(attribute, configuration[:message]) if CNPJ.invalid?(value)
67
- end
68
-
75
+ validates_with CNPJValidator, _merge_attributes(attr_names)
69
76
  end
70
77
  end
71
78
  end
@@ -1,68 +1,77 @@
1
- module CPF
2
- BLACK_LIST = %w(12345678909 11111111111 22222222222 33333333333 44444444444
3
- 55555555555 66666666666 77777777777 88888888888 99999999999
4
- 00000000000)
5
-
6
- def self.valid?(cpf)
7
- cpf = cpf.to_s
8
-
9
- # could be 10 or 11 digits or with mask 999.999.999-99
10
- if cpf !~ /^\d{10,11}$|\d{3}\.\d{3}\.\d{3}-\d{2}$/
11
- return false
12
- end
13
-
14
- cpf = cpf.scan(/\d/).collect(&:to_i)
15
- cpf.unshift(0) if cpf.length == 10
1
+ module ActiveRecord
2
+ module Validations
3
+
4
+ class CPFValidator < ActiveModel::EachValidator
5
+ @@black_list = %w(12345678909 11111111111 22222222222 33333333333 44444444444
6
+ 55555555555 66666666666 77777777777 88888888888 99999999999
7
+ 00000000000)
8
+
9
+ def validate_each(record, attribute, value)
10
+ return if valid? value
11
+ record.errors.add(attribute,
12
+ I18n.translate('activerecord.errors.messages.invalid', :default => 'invalid'),
13
+ options.merge(:value => value))
14
+ end
15
+
16
+ #
17
+ # Private methods.
18
+ #
19
+ private
20
+
21
+ def valid? cpf
22
+ begin
23
+ cpf = (cpf.is_a?(String) ? cpf : cpf.to_s)
24
+ rescue Exception => exc
25
+ return false
26
+ end
27
+
28
+ # could be 10 or 11 digits or with mask 999.999.999-99
29
+ if cpf !~ /^\d{10,11}$|\d{3}\.\d{3}\.\d{3}-\d{2}$/
30
+ return false
31
+ end
16
32
 
17
- # filter black list
18
- if BLACK_LIST.include? cpf.join
19
- return false
20
- end
33
+ cpf = cpf.scan(/\d/).collect(&:to_i)
34
+ cpf.unshift(0) if cpf.length == 10
21
35
 
22
- # calculate first digit
23
- sum = (0..8).inject(0) do |sum, i|
24
- sum + cpf[i] * (10 - i)
25
- end
36
+ # filter black list
37
+ if @@black_list.include? cpf.join
38
+ return false
39
+ end
26
40
 
27
- result = sum % 11
28
- result = result < 2 ? 0 : 11 - result
41
+ # calculate first digit
42
+ sum = (0..8).inject(0) do |sum, i|
43
+ sum + cpf[i] * (10 - i)
44
+ end
29
45
 
30
- if result != cpf[9]
31
- return false
32
- end
46
+ result = sum % 11
47
+ result = result < 2 ? 0 : 11 - result
33
48
 
34
- # calculate second digit
35
- sum = (0..8).inject(0) do |sum, i|
36
- sum + cpf[i] * (11 - i)
37
- end
49
+ if result != cpf[9]
50
+ return false
51
+ end
38
52
 
39
- sum += cpf[9] * 2
53
+ # calculate second digit
54
+ sum = (0..8).inject(0) do |sum, i|
55
+ sum + cpf[i] * (11 - i)
56
+ end
40
57
 
41
- result = sum % 11
42
- result = result < 2 ? 0 : 11 - result
58
+ sum += cpf[9] * 2
43
59
 
44
- result == cpf[10]
45
- end
46
-
47
- def self.invalid?(cpf)
48
- !valid?(cpf)
49
- end
50
- end
60
+ result = sum % 11
61
+ result = result < 2 ? 0 : 11 - result
51
62
 
52
- module ActiveRecord
53
- module Validations
63
+ result == cpf[10]
64
+ end
65
+
66
+ def invalid? cpf
67
+ not valid? cpf
68
+ end
69
+
70
+ end
71
+
54
72
  module ClassMethods
55
73
  def validates_as_cpf(*attr_names)
56
- configuration = {
57
- :message => I18n.translate('activerecord.errors.messages.invalid', :default => 'invalid' ),
58
- :allow_nil => true,
59
- :allow_blank => true }
60
- configuration.update(attr_names.pop) if attr_names.last.is_a?(Hash)
61
-
62
- validates_each attr_names, configuration do |record, attribute, value|
63
- record.errors.add(attribute, configuration[:message]) if CPF.invalid?(value)
64
- end
65
-
74
+ validates_with CPFValidator, _merge_attributes(attr_names)
66
75
  end
67
76
  end
68
77
  end
@@ -1,58 +1,18 @@
1
- #
2
- # RFC822 Email Address Regex
3
- # --------------------------
4
- #
5
- # Originally written by Cal Henderson
6
- # c.f. http://iamcal.com/publish/articles/php/parsing_email/
7
- #
8
- # Translated to Ruby by Tim Fletcher, with changes suggested by Dan Kubb.
9
- #
10
- # Licensed under a Creative Commons Attribution-ShareAlike 2.5 License
11
- # http://creativecommons.org/licenses/by-sa/2.5/
12
- #
13
- module RFC822
14
- EmailAddress = begin
15
- qtext = '[^\\x0d\\x22\\x5c\\x80-\\xff]'
16
- dtext = '[^\\x0d\\x5b-\\x5d\\x80-\\xff]'
17
- atom = '[^\\x00-\\x20\\x22\\x28\\x29\\x2c\\x2e\\x3a-' +
18
- '\\x3c\\x3e\\x40\\x5b-\\x5d\\x7f-\\xff]+'
19
- quoted_pair = '\\x5c[\\x00-\\x7f]'
20
- domain_literal = "\\x5b(?:#{dtext}|#{quoted_pair})*\\x5d"
21
- quoted_string = "\\x22(?:#{qtext}|#{quoted_pair})*\\x22"
22
- domain_ref = atom
23
- sub_domain = "(?:#{domain_ref}|#{domain_literal})"
24
- word = "(?:#{atom}|#{quoted_string})"
25
- domain = "#{sub_domain}(?:\\x2e#{sub_domain})*"
26
- local_part = "#{word}(?:\\x2e#{word})*"
27
- addr_spec = "#{local_part}\\x40#{domain}"
28
- pattern = /\A#{addr_spec}\z/
29
- end
30
- end
31
-
32
- # Validation helper for ActiveRecord derived objects that cleanly and simply
33
- # allows the model to check if the given string is a syntactically valid email
34
- # address (by using the RFC822 module above).
35
- #
36
- # Original code by Ximon Eighteen <ximon.eightee@int.greenpeace.org> which was
37
- # heavily based on code I can no longer find on the net, my apologies to the
38
- # author!
39
- #
40
- # Huge credit goes to Dan Kubb <dan.kubb@autopilotmarketing.com> for
41
- # submitting a patch to massively simplify this code and thereby instruct me
42
- # in the ways of Rails too! I reflowed the patch a little to keep the line
43
- # length to a maximum of 78 characters, an old habit.
44
1
  module ActiveRecord
45
2
  module Validations
3
+
4
+ class EmailValidator < ActiveModel::EachValidator
5
+ def validate_each(record, attribute, value)
6
+ return if not (value.is_a?(String) ? value : value.to_s).match(/\A([\w\.%\+\-]+)@([\w\-]+\.)+([\w]{2,})\z/i).nil?
7
+ record.errors.add(attribute,
8
+ I18n.translate('activerecord.errors.messages.invalid', :default => 'invalid'),
9
+ options.merge(:value => value))
10
+ end
11
+ end
12
+
46
13
  module ClassMethods
47
14
  def validates_as_email(*attr_names)
48
- configuration = {
49
- :message => I18n.translate('activerecord.errors.messages.invalid', :default => 'invalid' ),
50
- :with => RFC822::EmailAddress,
51
- :allow_nil => true,
52
- :allow_blank => true }
53
- configuration.update(attr_names.pop) if attr_names.last.is_a?(Hash)
54
-
55
- validates_format_of attr_names, configuration
15
+ validates_with EmailValidator, _merge_attributes(attr_names)
56
16
  end
57
17
  end
58
18
  end
@@ -1,15 +1,18 @@
1
1
  module ActiveRecord
2
2
  module Validations
3
+
4
+ class PhoneNumberBrValidator < ActiveModel::EachValidator
5
+ def validate_each(record, attribute, value)
6
+ return if not (value.is_a?(String) ? value : value.to_s).match(/\A([1-9]{2})([- ]{0,1})(\d{3}|\d{4})([- ]{0,1})(\d{4})\Z/).nil?
7
+ record.errors.add(attribute,
8
+ I18n.translate('activerecord.errors.messages.invalid', :default => 'invalid'),
9
+ options.merge(:value => value))
10
+ end
11
+ end
12
+
3
13
  module ClassMethods
4
14
  def validates_as_phonenumber_br(*attr_names)
5
- configuration = {
6
- :message => I18n.translate('activerecord.errors.messages.invalid', :default => 'invalid' ),
7
- :with => /\A([1-9]{2})([- ]{0,1})(\d{3}|\d{4})([- ]{0,1})(\d{4})\Z/,
8
- :allow_nil => true,
9
- :allow_blank => true }
10
- configuration.update(attr_names.pop) if attr_names.last.is_a?(Hash)
11
-
12
- validates_format_of attr_names, configuration
15
+ validates_with PhoneNumberBrValidator, _merge_attributes(attr_names)
13
16
  end
14
17
  end
15
18
  end
@@ -1,32 +1,35 @@
1
- module UF_BR
2
- LIST_UP = %w(AC AL AM AP BA CE DF ES GO MA MG MS MT PA PB PE PI PR RJ RN RO RR RS SC SE SP TO)
3
- LIST_DOWN = %w(ac al am ap ba ce df es go ma mg ms mt pa pb pe pi pr rj rn ro rr rs sc se sp to)
4
-
5
- def self.valid?(uf_br, allow_up = true, allow_down = true)
6
- (allow_up and LIST_UP.include? uf_br) or (allow_down and LIST_DOWN.include? uf_br)
7
- end
8
-
9
- def self.invalid?(uf_br, allow_up = true, allow_down = true)
10
- !valid?(uf_br, allow_up, allow_down)
11
- end
12
- end
13
-
14
1
  module ActiveRecord
15
2
  module Validations
3
+
4
+ class UFBRValidator < ActiveModel::EachValidator
5
+
6
+ @@ufs = %w(AC AL AM AP BA CE DF ES GO MA MG MS MT PA PB PE PI PR RJ RN RO RR RS SC SE SP TO)
7
+
8
+ def validate_each(record, attribute, value)
9
+ return if valid? value
10
+ record.errors.add(attribute,
11
+ I18n.translate('activerecord.errors.messages.invalid', :default => 'invalid'),
12
+ options.merge(:value => value))
13
+ end
14
+
15
+ #
16
+ # Private methods.
17
+ #
18
+ private
19
+
20
+ def valid? uf_br
21
+ @@ufs.include? (uf_br.is_a?(String) ? uf_br.upcase : uf_br.to_s.upcase)
22
+ end
23
+
24
+ def invalid? uf_br
25
+ not valid? uf_br
26
+ end
27
+
28
+ end
29
+
16
30
  module ClassMethods
17
31
  def validates_as_uf_br(*attr_names)
18
- configuration = {
19
- :message => I18n.translate('activerecord.errors.messages.invalid', :default => 'invalid' ),
20
- :allow_nil => true,
21
- :allow_blank => true,
22
- :allow_down => true,
23
- :allow_up => true }
24
- configuration.update(attr_names.pop) if attr_names.last.is_a?(Hash)
25
-
26
- validates_each attr_names, configuration do |record, attribute, value|
27
- record.errors.add(attribute, configuration[:message]) if UF_BR.invalid?(value, configuration[:allow_up], configuration[:allow_down])
28
- end
29
-
32
+ validates_with UFBRValidator, _merge_attributes(attr_names)
30
33
  end
31
34
  end
32
35
  end
@@ -1,15 +1,18 @@
1
1
  module ActiveRecord
2
2
  module Validations
3
+
4
+ class WebsiteValidator < ActiveModel::EachValidator
5
+ def validate_each(record, attribute, value)
6
+ return if not (value.is_a?(String) ? value : value.to_s).match(/\A(http|https)[:]\/{2}[^\/.]+([.][^\/.]+)+.*\Z/i).nil?
7
+ record.errors.add(attribute,
8
+ I18n.translate('activerecord.errors.messages.invalid', :default => 'invalid'),
9
+ options.merge(:value => value))
10
+ end
11
+ end
12
+
3
13
  module ClassMethods
4
14
  def validates_as_website(*attr_names)
5
- configuration = {
6
- :message => I18n.translate('activerecord.errors.messages.invalid', :default => 'invalid' ),
7
- :with => /\A(http|https)[:]\/{2}[^\/.]+([.][^\/.]+)+.*\Z/i,
8
- :allow_nil => true,
9
- :allow_blank => true }
10
- configuration.update(attr_names.pop) if attr_names.last.is_a?(Hash)
11
-
12
- validates_format_of attr_names, configuration
15
+ validates_with WebsiteValidator, _merge_attributes(attr_names)
13
16
  end
14
17
  end
15
18
  end
@@ -22,11 +22,17 @@ end
22
22
  class ValidatesAsCepTest < Test::Unit::TestCase
23
23
  def test_illegal_cep
24
24
  values = [
25
+ nil,
26
+ '',
27
+ '0123456',
28
+ '12-432300',
29
+ '-',
25
30
  '1234',
26
31
  '11111111111111111',
27
32
  'name???',
28
33
  '1234567890'
29
- ]
34
+ ]
35
+
30
36
  values.each do |value|
31
37
  assert !TestRecord.new(:cep => value).valid?, "#{value} should be illegal."
32
38
  end
@@ -36,9 +42,10 @@ class ValidatesAsCepTest < Test::Unit::TestCase
36
42
  values = [
37
43
  '05012-101',
38
44
  '01234-000',
39
- '12345-678']
40
-
41
- values.push('')
45
+ '12345-678',
46
+ '03124891',
47
+ '93123763'
48
+ ]
42
49
 
43
50
  values.each do |value|
44
51
  assert TestRecord.new(:cep => value).valid?, "#{value} should be legal."
@@ -22,6 +22,18 @@ end
22
22
  class ValidatesAsCNPJTest < Test::Unit::TestCase
23
23
  def test_illegal_cnpj
24
24
  values = [
25
+ nil,
26
+ '',
27
+ '00000000000000',
28
+ '11111111111111',
29
+ '22222222222222',
30
+ '33333333333333',
31
+ '44444444444444',
32
+ '55555555555555',
33
+ '66666666666666',
34
+ '77777777777777',
35
+ '88888888888888',
36
+ '99999999999999',
25
37
  '1234',
26
38
  '11111111111111111',
27
39
  '1.2.3.4.1',
@@ -29,7 +41,7 @@ class ValidatesAsCNPJTest < Test::Unit::TestCase
29
41
  '00000000000',
30
42
  '227.566.442-42',
31
43
  '22756644242',
32
- '11111111111111'
44
+ '11.111.111/1111-11'
33
45
  ]
34
46
  values.each do |value|
35
47
  assert !TestRecord.new(:cnpj => value).valid?, "#{value} should be illegal."
@@ -41,8 +53,6 @@ class ValidatesAsCNPJTest < Test::Unit::TestCase
41
53
  '28.261.861/0001-42',
42
54
  '28261861000142']
43
55
 
44
- values.push('')
45
-
46
56
  values.each do |value|
47
57
  assert TestRecord.new(:cnpj => value).valid?, "#{value} should be legal."
48
58
  end
@@ -22,6 +22,8 @@ end
22
22
  class ValidatesAsCpfTest < Test::Unit::TestCase
23
23
  def test_illegal_cpf
24
24
  values = [
25
+ nil,
26
+ '',
25
27
  '1234',
26
28
  '11111111111111111',
27
29
  '1.2.3.4.1',
@@ -40,9 +42,8 @@ class ValidatesAsCpfTest < Test::Unit::TestCase
40
42
  def test_legal_cpf
41
43
  values = [
42
44
  '227.566.442-42',
43
- '22756644242']
44
-
45
- values.push('')
45
+ '22756644242'
46
+ ]
46
47
 
47
48
  values.each do |value|
48
49
  assert TestRecord.new(:cpf => value).valid?, "#{value} should be legal."
@@ -20,28 +20,25 @@ class TestRecord < ActiveRecord::Base
20
20
  end
21
21
 
22
22
  class ValidatesAsEmailTest < Test::Unit::TestCase
23
- def test_illegal_rfc822_email_address
23
+ def test_illegal_email_address
24
24
  addresses = [
25
+ nil,
26
+ '',
25
27
  'Max@Job 3:14',
26
28
  'Job@Book of Job',
27
- 'J. P. \'s-Gravezande, a.k.a. The Hacker!@example.com',
28
- ]
29
+ 'J. P. \'s-Gravezande, a.k.a. The Hacker!@example.com'
30
+ ]
29
31
  addresses.each do |address|
30
32
  assert !TestRecord.new(:email => address).valid?, "#{address} should be illegal."
31
33
  end
32
34
  end
33
35
 
34
- def test_legal_rfc822_email_address
36
+ def test_legal_email_address
35
37
  addresses = [
36
- 'test@example',
37
38
  'test@example.com',
38
39
  'test@example.co.uk',
39
- '"J. P. \'s-Gravezande, a.k.a. The Hacker!"@example.com',
40
- 'me@[187.223.45.119]',
41
- 'someone@123.com',
42
- ]
43
-
44
- addresses.push('')
40
+ 'someone@123.com'
41
+ ]
45
42
 
46
43
  addresses.each do |address|
47
44
  assert TestRecord.new(:email => address).valid?, "#{address} should be legal."
@@ -22,6 +22,8 @@ end
22
22
  class ValidatesAsPhoneNumberBRTest < Test::Unit::TestCase
23
23
  def test_illegal_phonenumber_br
24
24
  values = [
25
+ nil,
26
+ '',
25
27
  '1234',
26
28
  '11111111111111111',
27
29
  'name???',
@@ -42,9 +44,8 @@ class ValidatesAsPhoneNumberBRTest < Test::Unit::TestCase
42
44
  '11 5555 5555',
43
45
  '11 555 5555',
44
46
  '11-5555 5555',
45
- '11 555-5555']
46
-
47
- values.push('')
47
+ '11 555-5555'
48
+ ]
48
49
 
49
50
  values.each do |value|
50
51
  assert TestRecord.new(:phonenumber_br => value).valid?, "#{value} should be legal."
@@ -22,6 +22,8 @@ end
22
22
  class ValidatesAsUFBRTest < Test::Unit::TestCase
23
23
  def test_illegal_uf_br
24
24
  values = [
25
+ nil,
26
+ '',
25
27
  'rh',
26
28
  'cc',
27
29
  'sao paulo',
@@ -36,8 +38,6 @@ class ValidatesAsUFBRTest < Test::Unit::TestCase
36
38
  values = %w(ac al am ap ba ce df es go ma mg ms mt pa pb pe pi pr rj rn ro rr rs sc se sp to
37
39
  AC AL AM AP BA CE DF ES GO MA MG MS MT PA PB PE PI PR RJ RN RO RR RS SC SE SP TO)
38
40
 
39
- values.push('')
40
-
41
41
  values.each do |value|
42
42
  assert TestRecord.new(:uf_br => value).valid?, "#{value} should be legal."
43
43
  end
@@ -22,6 +22,8 @@ end
22
22
  class ValidatesAsWebsiteTest < Test::Unit::TestCase
23
23
  def test_illegal_website
24
24
  values = [
25
+ nil,
26
+ '',
25
27
  'http://',
26
28
  'http:///',
27
29
  'http://www',
@@ -39,9 +41,8 @@ class ValidatesAsWebsiteTest < Test::Unit::TestCase
39
41
  'https://test.com',
40
42
  'https://test.com/',
41
43
  'http://www.test.com/test/test/test.html',
42
- 'https://www.test.com/test/test/test.html?test=test']
43
-
44
- values.push('')
44
+ 'https://www.test.com/test/test/test.html?test=test'
45
+ ]
45
46
 
46
47
  values.each do |value|
47
48
  assert TestRecord.new(:website => value).valid?, "#{value} should be legal."
metadata CHANGED
@@ -4,25 +4,25 @@ version: !ruby/object:Gem::Version
4
4
  prerelease: false
5
5
  segments:
6
6
  - 0
7
- - 1
8
- - 3
9
- version: 0.1.3
7
+ - 2
8
+ - 0
9
+ version: 0.2.0
10
10
  platform: ruby
11
11
  authors:
12
- - Rafael Barbolo
13
- - Ximon Eighteen
14
- - Dan Kubb
15
- - Thijs van der Vossen
12
+ - Rafael Barbolo Lopes
13
+ - Rafael Ivan Garcia
16
14
  autorequire:
17
15
  bindir: bin
18
16
  cert_chain: []
19
17
 
20
- date: 2010-05-14 00:00:00 -03:00
18
+ date: 2011-04-14 00:00:00 -03:00
21
19
  default_executable:
22
20
  dependencies: []
23
21
 
24
22
  description: Rails gem/plugin that implements a series of ActiveRecord validation helpers
25
- email: rafael@barbolo.com.br
23
+ email:
24
+ - rafael.barbolo@infosimples.com.br
25
+ - rafael.ivan@infosimples.com.br
26
26
  executables: []
27
27
 
28
28
  extensions: []
@@ -31,11 +31,11 @@ extra_rdoc_files: []
31
31
 
32
32
  files:
33
33
  - CHANGELOG
34
- - LICENSE
35
- - README
34
+ - MIT-LICENSE
35
+ - README.rdoc
36
36
  - Rakefile
37
37
  - init.rb
38
- - lib/validates_as_.rb
38
+ - lib/more_validators.rb
39
39
  - lib/validates_as_cep.rb
40
40
  - lib/validates_as_cnpj.rb
41
41
  - lib/validates_as_cpf.rb
@@ -51,15 +51,16 @@ files:
51
51
  - test/validates_as_website_test.rb
52
52
  - test/validates_as_uf_br_test.rb
53
53
  has_rdoc: true
54
- homepage: http://github.com/barbolo/more_validators
54
+ homepage: http://github.com/infosimples/more_validators
55
55
  licenses: []
56
56
 
57
- post_install_message: "\n ============================================================\n Thanks for installing MoreValidators!\n ------------------------------------------------------------\n Check it out at http://github.com/barbolo/more_validators\n ============================================================\n "
57
+ post_install_message: "\n ============================================================\n Thanks for installing MoreValidators!\n ------------------------------------------------------------\n Check it out at http://github.com/infosimples/more_validators\n ============================================================\n "
58
58
  rdoc_options: []
59
59
 
60
60
  require_paths:
61
61
  - lib
62
62
  required_ruby_version: !ruby/object:Gem::Requirement
63
+ none: false
63
64
  requirements:
64
65
  - - ">="
65
66
  - !ruby/object:Gem::Version
@@ -67,6 +68,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
67
68
  - 0
68
69
  version: "0"
69
70
  required_rubygems_version: !ruby/object:Gem::Requirement
71
+ none: false
70
72
  requirements:
71
73
  - - ">="
72
74
  - !ruby/object:Gem::Version
@@ -76,7 +78,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
76
78
  requirements: []
77
79
 
78
80
  rubyforge_project:
79
- rubygems_version: 1.3.6
81
+ rubygems_version: 1.3.7
80
82
  signing_key:
81
83
  specification_version: 3
82
84
  summary: Rails gem/plugin that provides a series of validators
data/LICENSE DELETED
@@ -1,5 +0,0 @@
1
- Licensing terms follow:
2
-
3
- This software is placed under the Creative Commons Attribution-Share Alike 3.0 Unported License
4
-
5
- http://creativecommons.org/licenses/by-sa/3.0/
data/README DELETED
@@ -1,59 +0,0 @@
1
- MoreValidators
2
- ==============
3
-
4
- Rails gem/plugin is a series of validators provided by me or other people:
5
-
6
- ValidateAsEmail: http://github.com/gbdev/validates_as_email
7
-
8
- It's released under Creative Commons Attribution-Share Alike 3.0 Unported License.
9
-
10
- Talk to me if you have any questions:
11
- Rafael Barbolo: rafael@barbolo.com.br
12
- http://twitter.com/barbolo
13
-
14
- Installation:
15
- =============
16
- Install the gem(s):
17
- gem install more_validators
18
-
19
- Add to environment.rb initializer block:
20
- config.gem 'more_validators', :lib => 'validates_as_'
21
-
22
- LatestVersion
23
- --------------
24
- Version: 0.1.3
25
- --------------
26
-
27
- Usage:
28
- ======
29
- In your model file do something like:
30
-
31
- class MyClass < ActiveRecord::Base
32
-
33
- # Email validation
34
- validates_as_email :email, :message => 'Invalid', :allow_nil => true, :allow_blank => true
35
-
36
- # Brazilian postal code validation
37
- validates_as_cep :cep, :message => 'Invalid', :allow_nil => true, :allow_blank => true
38
-
39
- # Brazilian phone number validation
40
- validates_as_phonenumber_br :phonenumber, :message => 'Invalid', :allow_nil => true, :allow_blank => true
41
-
42
- # CPF validation
43
- validates_as_cpf :cpf, :message => 'Invalid', :allow_nil => true, :allow_blank => true
44
-
45
- # CNPJ validation
46
- validates_as_cnpj :cnpj, :message => 'Invalid', :allow_nil => true, :allow_blank => true
47
-
48
- # Brazilian UF validation, both upcase and downcase are allowed by default
49
- validates_as_uf_br :uf, :allow_up => true, :allow_down => true
50
-
51
- end
52
-
53
- Tests:
54
- ======
55
- Some tests have been added to each validator.
56
-
57
- License:
58
- ========
59
- See the LICENSE file.