activevalidators 2.0.2 → 2.1.0
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.
- checksums.yaml +7 -0
- data/.travis.yml +3 -6
- data/Gemfile +11 -1
- data/README.md +3 -1
- data/activevalidators.gemspec +5 -4
- data/lib/active_model/validations/credit_card_validator.rb +16 -16
- data/lib/active_model/validations/email_validator.rb +20 -15
- data/lib/active_model/validations/ip_validator.rb +2 -1
- data/lib/active_model/validations/siren_validator.rb +33 -0
- data/lib/active_model/validations/url_validator.rb +1 -0
- data/lib/activevalidators.rb +1 -1
- data/test/test_helper.rb +5 -11
- data/test/validations/date_test.rb +1 -0
- data/test/validations/ip_test.rb +13 -0
- data/test/validations/siren_test.rb +55 -0
- metadata +36 -50
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: de64a7aa6feb36cf4d57acc13a620b8b26ad7b14
|
4
|
+
data.tar.gz: e9983a0c5dba7483e26f6594e704f0e01468c872
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: d5df00615461a33d2c4a71ee15cddbc99e69cdff6759421dfd4289b913b2b1b51c6481d27feb42a8f821a9a55b07c9615293583ab9792ba8679946767176d042
|
7
|
+
data.tar.gz: 5908af5ffe6643ba5c8df5b981254c5652964833e1af5f8ee61acfc9ac493ead71f957ce5866c9a789ac417d357b18a48936e5185da4c7a9c164eaf967d491c3
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -19,6 +19,7 @@ In your models, the gem provides new validators like `email`, or `url`:
|
|
19
19
|
validates :email_address, :email => true # == :email => { :strict => false }
|
20
20
|
validates :link_url, :url => true
|
21
21
|
validates :user_phone, :phone => true
|
22
|
+
validates :company_siren, :siren => true
|
22
23
|
validates :password, :password => { :strength => :medium }
|
23
24
|
validates :twitter_at, :twitter => { :format => :username_with_at }
|
24
25
|
validates :twitter_url, :twitter => { :format => :url }
|
@@ -61,6 +62,7 @@ Exhaustive list of supported validators and their implementation:
|
|
61
62
|
* `phone` : based on a set of predefined masks
|
62
63
|
* `postal_code`: based on a set of predefined masks
|
63
64
|
* `respond_to`
|
65
|
+
* `siren`
|
64
66
|
* `slug` : based on `ActiveSupport::String#parameterize`
|
65
67
|
* `tracking_number`: based on a set of predefined masks
|
66
68
|
* `twitter` : based on a regular expression
|
@@ -98,4 +100,4 @@ Lots of improvements can be made:
|
|
98
100
|
|
99
101
|
## Copyright
|
100
102
|
|
101
|
-
Copyright (c) 2010-
|
103
|
+
Copyright (c) 2010-2014 Franck Verrot. MIT LICENSE. See LICENSE for details.
|
data/activevalidators.gemspec
CHANGED
@@ -1,20 +1,21 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
Gem::Specification.new do |s|
|
3
3
|
s.name = 'activevalidators'
|
4
|
-
s.version = '2.0
|
4
|
+
s.version = '2.1.0'
|
5
5
|
s.platform = Gem::Platform::RUBY
|
6
6
|
s.authors = ['Franck Verrot', 'Paco Guzmán', 'Oriol Gual', 'Garrett Bjerkhoel', 'Renato Riccieri Santos Zannon', 'Brian Moseley']
|
7
7
|
s.email = ['franck@verrot.fr']
|
8
8
|
s.homepage = 'http://github.com/franckverrot/activevalidators'
|
9
9
|
s.summary = %q{Collection of ActiveModel/ActiveRecord validations}
|
10
10
|
s.description = %q{ActiveValidators is a collection of ActiveModel/ActiveRecord validations}
|
11
|
+
s.license = 'MIT'
|
11
12
|
|
12
13
|
s.add_development_dependency 'bundler'
|
13
|
-
s.add_development_dependency 'minitest'
|
14
|
+
s.add_development_dependency 'minitest', '~> 4.2.0' # Rails fixes this...
|
14
15
|
s.add_dependency 'rake' , '>= 0.8.7'
|
15
16
|
s.add_dependency 'activemodel' , '>= 3.0.0'
|
16
|
-
s.add_dependency 'phony' , '
|
17
|
-
s.add_dependency 'countries' , '~> 0.
|
17
|
+
s.add_dependency 'phony' , '>= 1.9.0'
|
18
|
+
s.add_dependency 'countries' , '~> 0.9.3'
|
18
19
|
s.add_dependency 'mail'
|
19
20
|
s.add_dependency 'date_validator'
|
20
21
|
|
@@ -46,22 +46,22 @@ module ActiveModel
|
|
46
46
|
end
|
47
47
|
|
48
48
|
def self.luhn_valid?(s)
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
value.
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
49
|
+
value = s.gsub(/\D/, '').reverse
|
50
|
+
|
51
|
+
sum = i = 0
|
52
|
+
|
53
|
+
value.each_char do |ch|
|
54
|
+
n = ch.to_i
|
55
|
+
|
56
|
+
n *= 2 if i.odd?
|
57
|
+
|
58
|
+
n = 1 + (n - 10) if n >= 10
|
59
|
+
|
60
|
+
sum += n
|
61
|
+
i += 1
|
62
|
+
end
|
63
|
+
|
64
|
+
(sum % 10).zero?
|
65
65
|
end
|
66
66
|
end
|
67
67
|
end
|
@@ -7,24 +7,10 @@ module ActiveModel
|
|
7
7
|
end
|
8
8
|
|
9
9
|
def validate_each(record, attribute, value)
|
10
|
-
# takes from: https://github.com/hallelujah/valid_email
|
11
10
|
begin
|
12
11
|
mail = Mail::Address.new(value)
|
13
|
-
# We must check that value contains a domain and that value is an email address
|
14
|
-
valid = mail.domain && value.include?(mail.address)
|
15
12
|
|
16
|
-
|
17
|
-
# We need to dig into treetop
|
18
|
-
# A valid domain must have dot_atom_text elements size > 1
|
19
|
-
# user@localhost is excluded
|
20
|
-
# treetop must respond to domain
|
21
|
-
# We exclude valid email values like <user@localhost.com>
|
22
|
-
# Hence we use m.__send__(tree).domain
|
23
|
-
tree = mail.__send__(:tree)
|
24
|
-
valid &&= (tree.domain.dot_atom_text.elements.size > 1)
|
25
|
-
else
|
26
|
-
valid &&= (mail.domain.split('.').length > 1)
|
27
|
-
end
|
13
|
+
valid = basic_check(mail) && value.include?(mail.address)
|
28
14
|
rescue Exception => e
|
29
15
|
valid = false
|
30
16
|
end
|
@@ -37,6 +23,25 @@ module ActiveModel
|
|
37
23
|
|
38
24
|
record.errors.add attribute, (options[:message]) unless valid
|
39
25
|
end
|
26
|
+
|
27
|
+
def basic_check(mail)
|
28
|
+
# We must check that value contains a domain and that value is an email address
|
29
|
+
valid = !!mail.domain
|
30
|
+
|
31
|
+
if options[:only_address]
|
32
|
+
# We need to dig into treetop
|
33
|
+
# A valid domain must have dot_atom_text elements size > 1
|
34
|
+
# user@localhost is excluded
|
35
|
+
# treetop must respond to domain
|
36
|
+
# We exclude valid email values like <user@localhost.com>
|
37
|
+
# Hence we use m.__send__(tree).domain
|
38
|
+
tree = mail.__send__(:tree)
|
39
|
+
valid &&= (tree.domain.dot_atom_text.elements.size > 1)
|
40
|
+
else
|
41
|
+
valid &&= (mail.domain.split('.').length > 1)
|
42
|
+
end
|
43
|
+
valid
|
44
|
+
end
|
40
45
|
end
|
41
46
|
end
|
42
47
|
end
|
@@ -2,7 +2,8 @@ module ActiveModel
|
|
2
2
|
module Validations
|
3
3
|
class IpValidator < EachValidator
|
4
4
|
def validate_each(record, attribute, value)
|
5
|
-
|
5
|
+
value_str = value.to_s # might be an IPAddr
|
6
|
+
record.errors.add(attribute) if value_str.blank? || !regex.match(value_str)
|
6
7
|
end
|
7
8
|
|
8
9
|
def check_validity!
|
@@ -0,0 +1,33 @@
|
|
1
|
+
module ActiveModel
|
2
|
+
module Validations
|
3
|
+
class SirenValidator < EachValidator
|
4
|
+
# Validates siren format according to
|
5
|
+
# http://fr.wikipedia.org/wiki/SIREN
|
6
|
+
def valid_siren?(input)
|
7
|
+
str = input.to_s
|
8
|
+
reversed_array = str.split('').reverse
|
9
|
+
|
10
|
+
digits = reversed_array.each_with_index.map do |char, i|
|
11
|
+
coeff = (i % 2) + 1
|
12
|
+
(char.to_i * coeff).to_s.split('')
|
13
|
+
end
|
14
|
+
|
15
|
+
sum = digits.flatten.map(&:to_i).inject(:+)
|
16
|
+
|
17
|
+
(sum % 10) == 0
|
18
|
+
end
|
19
|
+
|
20
|
+
def validate_each(record, attribute, value)
|
21
|
+
if value.nil?
|
22
|
+
record.errors.add_on_blank(attribute)
|
23
|
+
else
|
24
|
+
if value.to_s.length != 9
|
25
|
+
record.errors.add attribute, :length
|
26
|
+
else
|
27
|
+
record.errors.add attribute, :format unless valid_siren?(value)
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/activevalidators.rb
CHANGED
@@ -6,7 +6,7 @@ require 'active_validators/one_nine_shims/one_nine_string'
|
|
6
6
|
module ActiveModel
|
7
7
|
module Validations
|
8
8
|
def self.activevalidators
|
9
|
-
%w(email url respond_to phone slug ip credit_card date password twitter postal_code tracking_number)
|
9
|
+
%w(email url respond_to phone slug ip credit_card date password twitter postal_code tracking_number siren)
|
10
10
|
end
|
11
11
|
|
12
12
|
activevalidators.each do |validator_name|
|
data/test/test_helper.rb
CHANGED
@@ -1,26 +1,20 @@
|
|
1
|
-
|
1
|
+
gem 'minitest'
|
2
|
+
require 'minitest/autorun'
|
3
|
+
require 'minitest/mock'
|
2
4
|
|
3
5
|
# silence warnings
|
4
6
|
old_w, $-w = $-w, false
|
5
7
|
|
6
|
-
require '
|
7
|
-
require 'minitest/mock'
|
8
|
-
require 'minitest/autorun'
|
8
|
+
require 'activevalidators'
|
9
9
|
|
10
10
|
# unsilence warnings
|
11
11
|
$-w = old_w
|
12
12
|
|
13
|
-
require 'activevalidators'
|
14
|
-
|
15
|
-
%w(models).each do |directory|
|
16
|
-
Dir["#{File.dirname(__FILE__)}/#{directory}/*.rb"].each {|f| require f}
|
17
|
-
end
|
18
|
-
|
19
13
|
class TestRecord
|
20
14
|
include ActiveModel::Validations
|
21
15
|
attr_accessor :ip, :url, :slug, :responder, :global_condition,
|
22
16
|
:local_condition, :phone, :email, :card, :password, :twitter_username,
|
23
|
-
:postal_code, :carrier, :tracking_number, :start_date, :end_date
|
17
|
+
:postal_code, :carrier, :tracking_number, :start_date, :end_date, :siren
|
24
18
|
|
25
19
|
def initialize(attrs = {})
|
26
20
|
attrs.each_pair { |k,v| send("#{k}=", v) }
|
data/test/validations/ip_test.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'test_helper.rb'
|
2
|
+
require 'ipaddr'
|
2
3
|
|
3
4
|
describe "IP Validation" do
|
4
5
|
describe "IPv4 Validation" do
|
@@ -8,6 +9,12 @@ describe "IP Validation" do
|
|
8
9
|
subject.errors.size.must_equal 0
|
9
10
|
end
|
10
11
|
|
12
|
+
it "accepts IPAddrs" do
|
13
|
+
subject = build_ip_record :v4, :ip => IPAddr.new('192.168.1.1')
|
14
|
+
subject.valid?.must_equal true
|
15
|
+
subject.errors.size.must_equal 0
|
16
|
+
end
|
17
|
+
|
11
18
|
describe "for invalid IPs" do
|
12
19
|
it "rejects invalid IPs" do
|
13
20
|
subject = build_ip_record :v4, :ip => '267.34.56.3'
|
@@ -30,6 +37,12 @@ describe "IP Validation" do
|
|
30
37
|
subject.errors.size.must_equal 0
|
31
38
|
end
|
32
39
|
|
40
|
+
it "accepts IPAddrs" do
|
41
|
+
subject = build_ip_record :v6, :ip => IPAddr.new('::1')
|
42
|
+
subject.valid?.must_equal true
|
43
|
+
subject.errors.size.must_equal 0
|
44
|
+
end
|
45
|
+
|
33
46
|
describe "for invalid IPs" do
|
34
47
|
it "rejects invalid IPs" do
|
35
48
|
subject = build_ip_record :v6, :ip => '192.168.1.1'
|
@@ -0,0 +1,55 @@
|
|
1
|
+
require 'test_helper.rb'
|
2
|
+
|
3
|
+
describe "Siren Validation" do
|
4
|
+
it "Rejects if not supplied" do
|
5
|
+
subject = build_siren_record true
|
6
|
+
subject.valid?.must_equal false
|
7
|
+
subject.errors.size.must_equal 1
|
8
|
+
end
|
9
|
+
|
10
|
+
describe 'supplied as a string' do
|
11
|
+
it "Accepts if valid" do
|
12
|
+
subject = build_siren_record true, :siren => '552100554'
|
13
|
+
subject.valid?.must_equal true
|
14
|
+
subject.errors.size.must_equal 0
|
15
|
+
end
|
16
|
+
|
17
|
+
it "Reject if invalid" do
|
18
|
+
subject = build_siren_record true, :siren => '552100553'
|
19
|
+
subject.valid?.must_equal false
|
20
|
+
subject.errors.size.must_equal 1
|
21
|
+
end
|
22
|
+
|
23
|
+
it "Reject if not the right size" do
|
24
|
+
subject = build_siren_record true, :siren => '55210055'
|
25
|
+
subject.valid?.must_equal false
|
26
|
+
subject.errors.size.must_equal 1
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
describe 'supplied as a number' do
|
31
|
+
it "Accepts if valid" do
|
32
|
+
subject = build_siren_record true, :siren => 732829320
|
33
|
+
subject.valid?.must_equal true
|
34
|
+
subject.errors.size.must_equal 0
|
35
|
+
end
|
36
|
+
|
37
|
+
it "Reject if invalid" do
|
38
|
+
subject = build_siren_record true, :siren => 732829321
|
39
|
+
subject.valid?.must_equal false
|
40
|
+
subject.errors.size.must_equal 1
|
41
|
+
end
|
42
|
+
|
43
|
+
it "Reject if not the right size" do
|
44
|
+
subject = build_siren_record true, :siren => 73282932
|
45
|
+
subject.valid?.must_equal false
|
46
|
+
subject.errors.size.must_equal 1
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
def build_siren_record siren, attrs = {}
|
51
|
+
TestRecord.reset_callbacks(:validate)
|
52
|
+
TestRecord.validates :siren, :siren => siren
|
53
|
+
TestRecord.new attrs
|
54
|
+
end
|
55
|
+
end
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: activevalidators
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0
|
5
|
-
prerelease:
|
4
|
+
version: 2.1.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Franck Verrot
|
@@ -14,134 +13,118 @@ authors:
|
|
14
13
|
autorequire:
|
15
14
|
bindir: bin
|
16
15
|
cert_chain: []
|
17
|
-
date:
|
16
|
+
date: 2014-03-09 00:00:00.000000000 Z
|
18
17
|
dependencies:
|
19
18
|
- !ruby/object:Gem::Dependency
|
20
19
|
name: bundler
|
21
20
|
requirement: !ruby/object:Gem::Requirement
|
22
|
-
none: false
|
23
21
|
requirements:
|
24
|
-
- -
|
22
|
+
- - ">="
|
25
23
|
- !ruby/object:Gem::Version
|
26
24
|
version: '0'
|
27
25
|
type: :development
|
28
26
|
prerelease: false
|
29
27
|
version_requirements: !ruby/object:Gem::Requirement
|
30
|
-
none: false
|
31
28
|
requirements:
|
32
|
-
- -
|
29
|
+
- - ">="
|
33
30
|
- !ruby/object:Gem::Version
|
34
31
|
version: '0'
|
35
32
|
- !ruby/object:Gem::Dependency
|
36
33
|
name: minitest
|
37
34
|
requirement: !ruby/object:Gem::Requirement
|
38
|
-
none: false
|
39
35
|
requirements:
|
40
|
-
- -
|
36
|
+
- - "~>"
|
41
37
|
- !ruby/object:Gem::Version
|
42
|
-
version:
|
38
|
+
version: 4.2.0
|
43
39
|
type: :development
|
44
40
|
prerelease: false
|
45
41
|
version_requirements: !ruby/object:Gem::Requirement
|
46
|
-
none: false
|
47
42
|
requirements:
|
48
|
-
- -
|
43
|
+
- - "~>"
|
49
44
|
- !ruby/object:Gem::Version
|
50
|
-
version:
|
45
|
+
version: 4.2.0
|
51
46
|
- !ruby/object:Gem::Dependency
|
52
47
|
name: rake
|
53
48
|
requirement: !ruby/object:Gem::Requirement
|
54
|
-
none: false
|
55
49
|
requirements:
|
56
|
-
- -
|
50
|
+
- - ">="
|
57
51
|
- !ruby/object:Gem::Version
|
58
52
|
version: 0.8.7
|
59
53
|
type: :runtime
|
60
54
|
prerelease: false
|
61
55
|
version_requirements: !ruby/object:Gem::Requirement
|
62
|
-
none: false
|
63
56
|
requirements:
|
64
|
-
- -
|
57
|
+
- - ">="
|
65
58
|
- !ruby/object:Gem::Version
|
66
59
|
version: 0.8.7
|
67
60
|
- !ruby/object:Gem::Dependency
|
68
61
|
name: activemodel
|
69
62
|
requirement: !ruby/object:Gem::Requirement
|
70
|
-
none: false
|
71
63
|
requirements:
|
72
|
-
- -
|
64
|
+
- - ">="
|
73
65
|
- !ruby/object:Gem::Version
|
74
66
|
version: 3.0.0
|
75
67
|
type: :runtime
|
76
68
|
prerelease: false
|
77
69
|
version_requirements: !ruby/object:Gem::Requirement
|
78
|
-
none: false
|
79
70
|
requirements:
|
80
|
-
- -
|
71
|
+
- - ">="
|
81
72
|
- !ruby/object:Gem::Version
|
82
73
|
version: 3.0.0
|
83
74
|
- !ruby/object:Gem::Dependency
|
84
75
|
name: phony
|
85
76
|
requirement: !ruby/object:Gem::Requirement
|
86
|
-
none: false
|
87
77
|
requirements:
|
88
|
-
- -
|
78
|
+
- - ">="
|
89
79
|
- !ruby/object:Gem::Version
|
90
|
-
version: 1.
|
80
|
+
version: 1.9.0
|
91
81
|
type: :runtime
|
92
82
|
prerelease: false
|
93
83
|
version_requirements: !ruby/object:Gem::Requirement
|
94
|
-
none: false
|
95
84
|
requirements:
|
96
|
-
- -
|
85
|
+
- - ">="
|
97
86
|
- !ruby/object:Gem::Version
|
98
|
-
version: 1.
|
87
|
+
version: 1.9.0
|
99
88
|
- !ruby/object:Gem::Dependency
|
100
89
|
name: countries
|
101
90
|
requirement: !ruby/object:Gem::Requirement
|
102
|
-
none: false
|
103
91
|
requirements:
|
104
|
-
- - ~>
|
92
|
+
- - "~>"
|
105
93
|
- !ruby/object:Gem::Version
|
106
|
-
version: 0.
|
94
|
+
version: 0.9.3
|
107
95
|
type: :runtime
|
108
96
|
prerelease: false
|
109
97
|
version_requirements: !ruby/object:Gem::Requirement
|
110
|
-
none: false
|
111
98
|
requirements:
|
112
|
-
- - ~>
|
99
|
+
- - "~>"
|
113
100
|
- !ruby/object:Gem::Version
|
114
|
-
version: 0.
|
101
|
+
version: 0.9.3
|
115
102
|
- !ruby/object:Gem::Dependency
|
116
103
|
name: mail
|
117
104
|
requirement: !ruby/object:Gem::Requirement
|
118
|
-
none: false
|
119
105
|
requirements:
|
120
|
-
- -
|
106
|
+
- - ">="
|
121
107
|
- !ruby/object:Gem::Version
|
122
108
|
version: '0'
|
123
109
|
type: :runtime
|
124
110
|
prerelease: false
|
125
111
|
version_requirements: !ruby/object:Gem::Requirement
|
126
|
-
none: false
|
127
112
|
requirements:
|
128
|
-
- -
|
113
|
+
- - ">="
|
129
114
|
- !ruby/object:Gem::Version
|
130
115
|
version: '0'
|
131
116
|
- !ruby/object:Gem::Dependency
|
132
117
|
name: date_validator
|
133
118
|
requirement: !ruby/object:Gem::Requirement
|
134
|
-
none: false
|
135
119
|
requirements:
|
136
|
-
- -
|
120
|
+
- - ">="
|
137
121
|
- !ruby/object:Gem::Version
|
138
122
|
version: '0'
|
139
123
|
type: :runtime
|
140
124
|
prerelease: false
|
141
125
|
version_requirements: !ruby/object:Gem::Requirement
|
142
|
-
none: false
|
143
126
|
requirements:
|
144
|
-
- -
|
127
|
+
- - ">="
|
145
128
|
- !ruby/object:Gem::Version
|
146
129
|
version: '0'
|
147
130
|
description: ActiveValidators is a collection of ActiveModel/ActiveRecord validations
|
@@ -151,8 +134,8 @@ executables: []
|
|
151
134
|
extensions: []
|
152
135
|
extra_rdoc_files: []
|
153
136
|
files:
|
154
|
-
- .gitignore
|
155
|
-
- .travis.yml
|
137
|
+
- ".gitignore"
|
138
|
+
- ".travis.yml"
|
156
139
|
- Gemfile
|
157
140
|
- LICENSE
|
158
141
|
- README.md
|
@@ -165,6 +148,7 @@ files:
|
|
165
148
|
- lib/active_model/validations/phone_validator.rb
|
166
149
|
- lib/active_model/validations/postal_code_validator.rb
|
167
150
|
- lib/active_model/validations/respond_to_validator.rb
|
151
|
+
- lib/active_model/validations/siren_validator.rb
|
168
152
|
- lib/active_model/validations/slug_validator.rb
|
169
153
|
- lib/active_model/validations/tracking_number_validator.rb
|
170
154
|
- lib/active_model/validations/twitter_validator.rb
|
@@ -180,33 +164,34 @@ files:
|
|
180
164
|
- test/validations/phone_test.rb
|
181
165
|
- test/validations/postal_code_test.rb
|
182
166
|
- test/validations/respond_to_test.rb
|
167
|
+
- test/validations/siren_test.rb
|
183
168
|
- test/validations/slug_test.rb
|
184
169
|
- test/validations/tracking_number_test.rb
|
185
170
|
- test/validations/twitter_test.rb
|
186
171
|
- test/validations/url_test.rb
|
187
172
|
homepage: http://github.com/franckverrot/activevalidators
|
188
|
-
licenses:
|
173
|
+
licenses:
|
174
|
+
- MIT
|
175
|
+
metadata: {}
|
189
176
|
post_install_message:
|
190
177
|
rdoc_options: []
|
191
178
|
require_paths:
|
192
179
|
- lib
|
193
180
|
required_ruby_version: !ruby/object:Gem::Requirement
|
194
|
-
none: false
|
195
181
|
requirements:
|
196
|
-
- -
|
182
|
+
- - ">="
|
197
183
|
- !ruby/object:Gem::Version
|
198
184
|
version: '0'
|
199
185
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
200
|
-
none: false
|
201
186
|
requirements:
|
202
|
-
- -
|
187
|
+
- - ">="
|
203
188
|
- !ruby/object:Gem::Version
|
204
189
|
version: '0'
|
205
190
|
requirements: []
|
206
191
|
rubyforge_project:
|
207
|
-
rubygems_version:
|
192
|
+
rubygems_version: 2.2.0
|
208
193
|
signing_key:
|
209
|
-
specification_version:
|
194
|
+
specification_version: 4
|
210
195
|
summary: Collection of ActiveModel/ActiveRecord validations
|
211
196
|
test_files:
|
212
197
|
- test/test_helper.rb
|
@@ -218,6 +203,7 @@ test_files:
|
|
218
203
|
- test/validations/phone_test.rb
|
219
204
|
- test/validations/postal_code_test.rb
|
220
205
|
- test/validations/respond_to_test.rb
|
206
|
+
- test/validations/siren_test.rb
|
221
207
|
- test/validations/slug_test.rb
|
222
208
|
- test/validations/tracking_number_test.rb
|
223
209
|
- test/validations/twitter_test.rb
|