validates 0.0.3 → 0.0.5
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.
- data/README.md +3 -0
- data/lib/validates.rb +1 -1
- data/lib/validates/email_regexp.rb +7 -0
- data/lib/validates/email_validator.rb +3 -1
- data/lib/validates/inn_validator.rb +28 -0
- data/lib/validates/version.rb +1 -1
- data/test/email_regexp_test.rb +53 -0
- data/validates.gemspec +3 -3
- metadata +11 -3
data/README.md
CHANGED
@@ -15,6 +15,7 @@ Add this to your `Gemfile`:
|
|
15
15
|
model User < ActiveRecord::Base
|
16
16
|
validates :email, :email => true
|
17
17
|
validates :site, :url => true, :allow_blank => true
|
18
|
+
validates :inn, :inn => true
|
18
19
|
end
|
19
20
|
|
20
21
|
model Page < ActiveRecord::Base
|
@@ -30,6 +31,8 @@ Email, Slug, Url, Money
|
|
30
31
|
|
31
32
|
0.0.3 - Added Money validator
|
32
33
|
|
34
|
+
0.0.4 - Add inn validator.
|
35
|
+
|
33
36
|
## Similar
|
34
37
|
|
35
38
|
* http://github.com/balexand/email_validator
|
data/lib/validates.rb
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
class EmailValidator < ActiveModel::EachValidator
|
2
|
+
include EmailRegexp
|
3
|
+
|
2
4
|
def validate_each(record, attribute, value)
|
3
|
-
unless value
|
5
|
+
unless regexp_compare(value)
|
4
6
|
record.errors.add(attribute, :email, options.merge(:value => value))
|
5
7
|
end
|
6
8
|
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
class InnValidator < ActiveModel::EachValidator
|
2
|
+
def validate_each(record, attribute, inn)
|
3
|
+
result = false
|
4
|
+
p10 = [2, 4, 10, 3, 5, 9, 4, 6, 8]
|
5
|
+
p11 = [7, 2, 4, 10, 3, 5, 9, 4, 6, 8]
|
6
|
+
p12 = [3, 7, 2, 4, 10, 3, 5, 9, 4, 6, 8]
|
7
|
+
inn = inn.gsub(/\D/, "") unless inn.nil?
|
8
|
+
inn ||= []
|
9
|
+
if inn.length == 10
|
10
|
+
n10 = calc(p10, inn)
|
11
|
+
result = (n10 == inn[9].to_i)
|
12
|
+
end
|
13
|
+
|
14
|
+
if inn.length == 12
|
15
|
+
n11 = calc(p11, inn)
|
16
|
+
n12 = calc(p12, inn)
|
17
|
+
result = (n11 == inn[10].to_i) && (n12 == inn[11].to_i)
|
18
|
+
end
|
19
|
+
|
20
|
+
unless result
|
21
|
+
record.errors.add(attribute, :inn, options.merge(:value => inn))
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
def calc(p, inn)
|
26
|
+
p.to_enum(:each_with_index).inject(0){|sum, elem| sum + elem[0].to_f * inn[elem[1]].to_f}%11%10
|
27
|
+
end
|
28
|
+
end
|
data/lib/validates/version.rb
CHANGED
@@ -0,0 +1,53 @@
|
|
1
|
+
require 'test/unit'
|
2
|
+
require File.expand_path(File.dirname(__FILE__) + '/../lib/validates/email_regexp')
|
3
|
+
|
4
|
+
class EmailRegexpTest < Test::Unit::TestCase
|
5
|
+
include EmailRegexp
|
6
|
+
|
7
|
+
def test_valid
|
8
|
+
valid_emails = [
|
9
|
+
'user@example.com',
|
10
|
+
'user.mail@example.com',
|
11
|
+
'user@example-domain.com',
|
12
|
+
'user@example-d-a.com',
|
13
|
+
'user@example.domain.com',
|
14
|
+
'user_mail@example.com',
|
15
|
+
'user+mail@example.com',
|
16
|
+
'user123@example.com',
|
17
|
+
'user@example123.com',
|
18
|
+
'user@example.domain',
|
19
|
+
'UseR@example.com',
|
20
|
+
'user-mail@example.com'
|
21
|
+
]
|
22
|
+
|
23
|
+
valid_emails.each do |email|
|
24
|
+
assert regexp_compare(email), "#{email} not valid"
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def test_invalid
|
29
|
+
invalid_emails = [
|
30
|
+
'example_email',
|
31
|
+
'us`er@example.com',
|
32
|
+
'use"r@example.com',
|
33
|
+
'user@example_domain.com',
|
34
|
+
'user@domain.12',
|
35
|
+
'user@domain',
|
36
|
+
'user@domain..com',
|
37
|
+
'user@.domain.com',
|
38
|
+
'user@-domain.com',
|
39
|
+
'user@domain-.com',
|
40
|
+
'user@domain.-a.com',
|
41
|
+
'user@domain-com',
|
42
|
+
'user mail@example.com',
|
43
|
+
'us[er@example.com',
|
44
|
+
'us\'er@example.com',
|
45
|
+
'us\er@example.com'
|
46
|
+
]
|
47
|
+
|
48
|
+
invalid_emails.each do |email|
|
49
|
+
assert !regexp_compare(email), "#{email} valid"
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
end
|
data/validates.gemspec
CHANGED
@@ -5,11 +5,11 @@ require "validates/version"
|
|
5
5
|
Gem::Specification.new do |s|
|
6
6
|
s.name = "validates"
|
7
7
|
s.version = Validates::VERSION
|
8
|
-
s.authors = ["Mikhail Stolbov"]
|
9
|
-
s.email = ["mstolbov@gmail.com"]
|
8
|
+
s.authors = ["Mikhail Stolbov","Anton Taraev","Konstantin Kosmatov"]
|
9
|
+
s.email = ["mstolbov@gmail.com","anti191@gmail.com","key@kosmatov.su"]
|
10
10
|
s.homepage = "https://github.com/kaize/validates"
|
11
11
|
s.summary = "Collection of simple validators for Rails 3"
|
12
|
-
s.description = "Email, Slug, Url, Money validators for Rails 3"
|
12
|
+
s.description = "Email, Slug, Url, Money, INN validators for Rails 3"
|
13
13
|
|
14
14
|
s.rubyforge_project = "validates"
|
15
15
|
|
metadata
CHANGED
@@ -1,15 +1,17 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: validates
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Mikhail Stolbov
|
9
|
+
- Anton Taraev
|
10
|
+
- Konstantin Kosmatov
|
9
11
|
autorequire:
|
10
12
|
bindir: bin
|
11
13
|
cert_chain: []
|
12
|
-
date: 2012-
|
14
|
+
date: 2012-09-06 00:00:00.000000000 Z
|
13
15
|
dependencies:
|
14
16
|
- !ruby/object:Gem::Dependency
|
15
17
|
name: activemodel
|
@@ -27,9 +29,11 @@ dependencies:
|
|
27
29
|
- - ! '>='
|
28
30
|
- !ruby/object:Gem::Version
|
29
31
|
version: 3.0.0
|
30
|
-
description: Email, Slug, Url, Money validators for Rails 3
|
32
|
+
description: Email, Slug, Url, Money, INN validators for Rails 3
|
31
33
|
email:
|
32
34
|
- mstolbov@gmail.com
|
35
|
+
- anti191@gmail.com
|
36
|
+
- key@kosmatov.su
|
33
37
|
executables: []
|
34
38
|
extensions: []
|
35
39
|
extra_rdoc_files: []
|
@@ -39,11 +43,14 @@ files:
|
|
39
43
|
- README.md
|
40
44
|
- Rakefile
|
41
45
|
- lib/validates.rb
|
46
|
+
- lib/validates/email_regexp.rb
|
42
47
|
- lib/validates/email_validator.rb
|
48
|
+
- lib/validates/inn_validator.rb
|
43
49
|
- lib/validates/money_validator.rb
|
44
50
|
- lib/validates/slug_validator.rb
|
45
51
|
- lib/validates/url_validator.rb
|
46
52
|
- lib/validates/version.rb
|
53
|
+
- test/email_regexp_test.rb
|
47
54
|
- validates.gemspec
|
48
55
|
homepage: https://github.com/kaize/validates
|
49
56
|
licenses: []
|
@@ -70,3 +77,4 @@ signing_key:
|
|
70
77
|
specification_version: 3
|
71
78
|
summary: Collection of simple validators for Rails 3
|
72
79
|
test_files: []
|
80
|
+
has_rdoc:
|