validates_formatting_of 0.5.0 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,5 +1,3 @@
1
- # This file does all of the preloading. Little to no actual code should go in this file.
2
-
3
1
  require "validates_formatting_of/version"
4
2
  require "validates_formatting_of/validation_messages"
5
3
  require "validates_formatting_of/validating_methods"
@@ -37,12 +37,7 @@ module ValidatesFormattingOf
37
37
 
38
38
  def validate_with(method)
39
39
  # Actually retrieve the regex to check against
40
- formatting.send(method)
41
- end
42
-
43
- def formatting
44
- # Grab the validating methods
45
- @formatting ||= ValidatingMethods.new
40
+ ValidatingMethods.send(method)
46
41
  end
47
42
  end
48
43
  end
@@ -1,68 +1,77 @@
1
1
  module ValidatesFormattingOf
2
2
  class ValidatingMethods
3
+ class << self
3
4
 
4
- # This method is very close to allowing what is specified in RFC 5322 and RFC 5321
5
- def email
6
- /\A([^@\s]+)@((?:(?!-)[-a-z0-9]+(?<!-)\.)+[a-z]{2,})\Z/i
7
- end
5
+ # This method is very close to allowing what is specified in RFC 5322 and RFC 5321
6
+ def email
7
+ %r{\A([^@\s]+)@((?:(?!-)[-a-z0-9]+(?<!-)\.)+[a-z]{2,})\Z}i
8
+ end
8
9
 
9
- # Taken from Ryan Bates' screencast on extracting gems. Works extremely well. Thanks Ryan!
10
- # (slightly revised to work on MRI 1.8.7 and ree)
11
- def url
12
- /^https?:\/\/([^\s:@]+:[^\s:@]*@)?[A-Za-z\d\-]+(\.[A-Za-z\d\-]+)+\.?(:\d{1,5})?([\/?]\S*)?$/i
13
- end
10
+ # Thie version of the email exists to support common validation libraries (such
11
+ # as client_side_validations) that require access to Rails' validation. Look-behinds
12
+ # are not supported in javascript.
13
+ def simple_email
14
+ %r{\A([^@\s]+)@((?:(?!-)[-a-z0-9]+(?<!-)\.)+[a-z]{2,})\Z}i
15
+ end
14
16
 
15
- # No numbers of symbols. allows "-"
16
- def alpha
17
- /^([^\d\W]|[-])*$/
18
- end
17
+ # Taken from Ryan Bates' screencast on extracting gems. Works extremely well. Thanks Ryan!
18
+ # (slightly revised to work on MRI 1.8.7 and ree)
19
+ def url
20
+ %r{\Ahttps?:\/\/([^\s:@]+:[^\s:@]*@)?[A-Za-z\d\-]+(\.[A-Za-z\d\-]+)+\.?(:\d{1,5})?([\/?]\S*)?\Z}i
21
+ end
19
22
 
20
- # Letters, numbers, and spaces
21
- def alphanum
22
- /^[A-Z0-9\s]+$/i
23
- end
23
+ # No numbers of symbols. allows "-"
24
+ def alpha
25
+ %r{\A([^\d\W]|[-])*\Z}
26
+ end
24
27
 
25
- # Visa, Mastercard, Discver, and American Express
26
- def credit_card
27
- /^((4\d{3})|(5[1-5]\d{2})|(6011))-?\d{4}-?\d{4}-?\d{4}|3[4,7]\d{13}$/
28
- end
28
+ # Letters, numbers, and spaces
29
+ def alphanum
30
+ %r{\A[A-Z0-9\s]+\Z}i
31
+ end
29
32
 
30
- # US Zip code. ##### or #####-####
31
- def us_zip
32
- /^\d{5}(-\d{4})?$/
33
- end
33
+ # Visa, Mastercard, Discver, and American Express
34
+ def credit_card
35
+ %r{\A((4\d{3})|(5[1-5]\d{2})|(6011))-?\d{4}-?\d{4}-?\d{4}|3[4,7]\d{13}\Z}
36
+ end
34
37
 
35
- # US Phone numbers.
36
- # Examples of valid formats:
37
- # * ###.###.####
38
- # * ###-###-####
39
- # * (###) ###-####
40
- # * (###)###-####
41
- # * #########
42
- # * ### ###-####
43
- def us_phone
44
- /^(\((\d{3})\)|\d{3})[ |\.|\-]?(\d{3})[ |\.|\-]?(\d{4})$/
45
- end
38
+ # US Zip code. ##### or #####-####
39
+ def us_zip
40
+ %r{\A\d{5}(-\d{4})?\Z}
41
+ end
46
42
 
47
- # IP Address validation
48
- def ip_address
49
- /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/
50
- end
43
+ # US Phone numbers.
44
+ # Examples of valid formats:
45
+ # * ###.###.####
46
+ # * ###-###-####
47
+ # * (###) ###-####
48
+ # * (###)###-####
49
+ # * #########
50
+ # * ### ###-####
51
+ def us_phone
52
+ %r{\A(\((\d{3})\)|\d{3})[ |\.|\-]?(\d{3})[ |\.|\-]?(\d{4})\Z}
53
+ end
51
54
 
52
- # Social Security Number pattern
53
- def ssn
54
- /^\d{3}([-.]){1}\d{2}([-.]){1}\d{4}$/
55
- end
55
+ # IP Address validation
56
+ def ip_address
57
+ %r{\A(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\Z}
58
+ end
56
59
 
57
- # Matches CSS colors either in three or six digit formats
58
- def hex_color
59
- /^([A-F0-9]{6}|[A-F0-9]{3})$/i
60
- end
60
+ # Social Security Number pattern
61
+ def ssn
62
+ %r{\A\d{3}([-.]){1}\d{2}([-.]){1}\d{4}\Z}
63
+ end
61
64
 
62
- # Ensures that what value is passed is a dollar amount of some kind
63
- def dollars
64
- /^\$?(\d{1,3}(\,\d{3})*|(\d+))(\.\d{2})?$/
65
- end
65
+ # Matches CSS colors either in three or six digit formats
66
+ def hex_color
67
+ %r{\A([A-F0-9]{6}|[A-F0-9]{3})\Z}i
68
+ end
69
+
70
+ # Ensures that what value is passed is a dollar amount of some kind
71
+ def dollars
72
+ %r{\A\$?(\d{1,3}(\,\d{3})*|(\d+))(\.\d{2})?\Z}
73
+ end
66
74
 
75
+ end
67
76
  end
68
77
  end
@@ -1,30 +1,23 @@
1
1
  module ValidatesFormattingOf
2
- module ValidationMessages
2
+ class ValidationMessages
3
3
 
4
- class Messages
4
+ Messages = {
5
+ :email => "is not a valid email",
6
+ :simple_email => "is not a valid email",
7
+ :url => "is not a valid URL",
8
+ :alpha => "must be only letters or dashes",
9
+ :alphanum => "must be letters, numbers",
10
+ :credit_card => "is not a valid credit card number",
11
+ :us_zip => "is not a valid zipcode",
12
+ :us_phone => "is not a valid phone number",
13
+ :ip_address => "is not a valid IP address",
14
+ :ssn => "is not a valid social security number",
15
+ :hex_color => "is not a valid hex color",
16
+ :dollars => "is not a valid dollar amount"
17
+ }
5
18
 
6
- def self.hash
7
- {
8
- :email => "is not a valid email",
9
- :url => "is not a valid URL",
10
- :alpha => "must be only letters or dashes",
11
- :alphanum => "must be letters, numbers",
12
- :credit_card => "is not a valid credit card number",
13
- :us_zip => "is not a valid zipcode",
14
- :us_phone => "is not a valid phone number",
15
- :ip_address => "is not a valid IP address",
16
- :ssn => "is not a valid social security number",
17
- :hex_color => "is not a valid hex color",
18
- :dollars => "is not a valid dollar amount"
19
- }
20
- end
21
-
22
- end
23
-
24
- extend self
25
-
26
- def message(message)
27
- Messages.hash[message.to_s.downcase.to_sym]
19
+ def self.message(message)
20
+ Messages.fetch(message.to_s.downcase.to_sym, "is not valid")
28
21
  end
29
22
 
30
23
  end
@@ -1,3 +1,3 @@
1
1
  module ValidatesFormattingOf
2
- VERSION = "0.5.0"
2
+ VERSION = "0.6.0"
3
3
  end
@@ -20,6 +20,23 @@ describe ValidatesFormattingOf::ModelAdditions do
20
20
  end
21
21
  end
22
22
 
23
+ describe "simple email for 1.8.7 and javascript validations (such as with client_side_validations)" do
24
+ class SimpleEmail < SuperModel::Base
25
+ validates_formatting_of :email, :using => :simple_email
26
+ end
27
+ it "validates that the email provided is valid" do
28
+ Email.new(:email => "example@example.com").should be_valid
29
+ Email.new(:email => "badexample.com").should_not be_valid
30
+ Email.new(:email => "mbridges.91@gmail.com").should be_valid
31
+ Email.new(:email => "some-random%%%strangely-formatted-email@lots.of.subdomains.com").should be_valid
32
+ Email.new(:email => "this__???{}|__should@be-valid.com").should be_valid
33
+ Email.new(:email => "visitorservices@vmfa.museum").should be_valid
34
+ Email.new(:email => "info@samoa.travel").should be_valid
35
+ Email.new(:email => "info@-samoa.travel").should_not be_valid
36
+ Email.new(:email => "info@samoa-.travel").should_not be_valid
37
+ Email.new(:email => "info@123-samoa.travel").should be_valid
38
+ end
39
+ end
23
40
  describe "url" do
24
41
  class Webpage < SuperModel::Base
25
42
  validates_formatting_of :url, :using => :url
@@ -15,7 +15,7 @@ Gem::Specification.new do |gem|
15
15
  gem.require_paths = ["lib"]
16
16
  gem.version = ValidatesFormattingOf::VERSION
17
17
 
18
- gem.add_dependency "rails", "~> 3.0"
18
+ gem.add_dependency "activerecord", "~> 3.0"
19
19
 
20
20
  gem.add_development_dependency "rake"
21
21
  gem.add_development_dependency "rspec"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: validates_formatting_of
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.0
4
+ version: 0.6.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-02-29 00:00:00.000000000 Z
12
+ date: 2012-07-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
- name: rails
16
- requirement: &70230387998560 !ruby/object:Gem::Requirement
15
+ name: activerecord
16
+ requirement: !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,15 @@ dependencies:
21
21
  version: '3.0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *70230387998560
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ~>
28
+ - !ruby/object:Gem::Version
29
+ version: '3.0'
25
30
  - !ruby/object:Gem::Dependency
26
31
  name: rake
27
- requirement: &70230387997920 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
28
33
  none: false
29
34
  requirements:
30
35
  - - ! '>='
@@ -32,10 +37,15 @@ dependencies:
32
37
  version: '0'
33
38
  type: :development
34
39
  prerelease: false
35
- version_requirements: *70230387997920
40
+ version_requirements: !ruby/object:Gem::Requirement
41
+ none: false
42
+ requirements:
43
+ - - ! '>='
44
+ - !ruby/object:Gem::Version
45
+ version: '0'
36
46
  - !ruby/object:Gem::Dependency
37
47
  name: rspec
38
- requirement: &70230387997300 !ruby/object:Gem::Requirement
48
+ requirement: !ruby/object:Gem::Requirement
39
49
  none: false
40
50
  requirements:
41
51
  - - ! '>='
@@ -43,10 +53,15 @@ dependencies:
43
53
  version: '0'
44
54
  type: :development
45
55
  prerelease: false
46
- version_requirements: *70230387997300
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
47
62
  - !ruby/object:Gem::Dependency
48
63
  name: supermodel
49
- requirement: &70230387996860 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
50
65
  none: false
51
66
  requirements:
52
67
  - - ! '>='
@@ -54,7 +69,12 @@ dependencies:
54
69
  version: '0'
55
70
  type: :development
56
71
  prerelease: false
57
- version_requirements: *70230387996860
72
+ version_requirements: !ruby/object:Gem::Requirement
73
+ none: false
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
58
78
  description: Common Rails validations wrapped in a gem.
59
79
  email:
60
80
  - mbridges.91@gmail.com
@@ -64,7 +84,6 @@ extra_rdoc_files: []
64
84
  files:
65
85
  - .gitignore
66
86
  - .rspec
67
- - .rvmrc
68
87
  - .travis.yml
69
88
  - CHANGELOG.md
70
89
  - Gemfile
@@ -94,7 +113,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
94
113
  version: '0'
95
114
  segments:
96
115
  - 0
97
- hash: -1332009593602573104
116
+ hash: -3727749513764569067
98
117
  required_rubygems_version: !ruby/object:Gem::Requirement
99
118
  none: false
100
119
  requirements:
@@ -103,10 +122,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
103
122
  version: '0'
104
123
  segments:
105
124
  - 0
106
- hash: -1332009593602573104
125
+ hash: -3727749513764569067
107
126
  requirements: []
108
127
  rubyforge_project:
109
- rubygems_version: 1.8.10
128
+ rubygems_version: 1.8.23
110
129
  signing_key:
111
130
  specification_version: 3
112
131
  summary: Adds several convenient methods to validate things such as emails, urls,
data/.rvmrc DELETED
@@ -1,55 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- # This is an RVM Project .rvmrc file, used to automatically load the ruby
4
- # development environment upon cd'ing into the directory
5
-
6
- # First we specify our desired <ruby>[@<gemset>], the @gemset name is optional.
7
- environment_id="ruby-1.9.3-p0@validates_formatting_of"
8
-
9
- #
10
- # Uncomment following line if you want options to be set only for given project.
11
- #
12
- # PROJECT_JRUBY_OPTS=( --1.9 )
13
-
14
- #
15
- # First we attempt to load the desired environment directly from the environment
16
- # file. This is very fast and efficient compared to running through the entire
17
- # CLI and selector. If you want feedback on which environment was used then
18
- # insert the word 'use' after --create as this triggers verbose mode.
19
- #
20
- if [[ -d "${rvm_path:-$HOME/.rvm}/environments" \
21
- && -s "${rvm_path:-$HOME/.rvm}/environments/$environment_id" ]]
22
- then
23
- \. "${rvm_path:-$HOME/.rvm}/environments/$environment_id"
24
-
25
- if [[ -s "${rvm_path:-$HOME/.rvm}/hooks/after_use" ]]
26
- then
27
- . "${rvm_path:-$HOME/.rvm}/hooks/after_use"
28
- fi
29
- else
30
- # If the environment file has not yet been created, use the RVM CLI to select.
31
- if ! rvm --create "$environment_id"
32
- then
33
- echo "Failed to create RVM environment '${environment_id}'."
34
- exit 1
35
- fi
36
- fi
37
-
38
- #
39
- # If you use an RVM gemset file to install a list of gems (*.gems), you can have
40
- # it be automatically loaded. Uncomment the following and adjust the filename if
41
- # necessary.
42
- #
43
- # filename=".gems"
44
- # if [[ -s "$filename" ]]
45
- # then
46
- # rvm gemset import "$filename" | grep -v already | grep -v listed | grep -v complete | sed '/^$/d'
47
- # fi
48
-
49
- # If you use bundler, this might be useful to you:
50
- # if command -v bundle && [[ -s Gemfile ]]
51
- # then
52
- # bundle install
53
- # fi
54
-
55
-