romanianvalidators 0.1.4 → 0.1.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.
- checksums.yaml +4 -4
- data/.ruby-gemset +1 -0
- data/.ruby-version +1 -0
- data/.travis.yml +1 -0
- data/LICENSE +1 -1
- data/README.md +3 -3
- data/lib/active_model/validations/bic_validator.rb +14 -8
- data/lib/active_model/validations/cif_validator.rb +1 -1
- data/lib/active_model/validations/cnp_validator.rb +18 -19
- data/lib/active_model/validations/iban_validator.rb +9 -10
- data/lib/romanianvalidators.rb +6 -6
- data/romanianvalidators.gemspec +1 -1
- data/test/test_helper.rb +3 -0
- metadata +17 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 50f809f30c598ff70bffc2683360837c69732452
|
4
|
+
data.tar.gz: bb39cbd87e1494b6e5339250bdc3c3dd5a7673da
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 19b479580c2a090b11a03a2a94c6de981e7c977d73d08983d506ff50e8ecd54ea9d722c4826a7f26926912a7fea664f01f9d3b5a779e79af8ede6bf543830de6
|
7
|
+
data.tar.gz: c92272d645cbb299d26eecf8a45df1d130b30b9b6e7b34c76cbf1bf0187ed8e982902cdf91ae4fe4005f594a6e9eaa943134c0ea728f9dfc2904397fc019f3e9
|
data/.ruby-gemset
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
romanianvalidators
|
data/.ruby-version
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
ruby-2.1.2
|
data/.travis.yml
CHANGED
data/LICENSE
CHANGED
data/README.md
CHANGED
@@ -40,8 +40,8 @@ The algorithms for validation are found in the source code.
|
|
40
40
|
|
41
41
|
```ruby
|
42
42
|
class User
|
43
|
-
validates :cnp, :
|
44
|
-
validates :company_cif, :
|
43
|
+
validates :cnp, cnp: { message: 'This is not a valid CNP' }
|
44
|
+
validates :company_cif, cif: true
|
45
45
|
end
|
46
46
|
```
|
47
47
|
|
@@ -52,4 +52,4 @@ The algorithms for validation are found in the source code.
|
|
52
52
|
|
53
53
|
### Copyright
|
54
54
|
|
55
|
-
Copyright (c) 2007-
|
55
|
+
Copyright (c) 2007-2014 Mihai Târnovan. MIT LICENSE. See LICENSE for details.
|
@@ -1,19 +1,25 @@
|
|
1
1
|
module ActiveModel
|
2
2
|
module Validations
|
3
3
|
class BicValidator < EachValidator
|
4
|
-
|
5
4
|
include ActiveModel::Validations::EmptyBlankEachValidator
|
6
|
-
|
5
|
+
COUNTRY_CODES =
|
6
|
+
%w(AF AL DZ AS AD AO AI AG AR AM AW AU AT AZ BS BH BD BB BY BE BZ BJ BM
|
7
|
+
BT BO BA BW BR BN BG BF BI KH CM CA CV KY CF TD CL CN CO KM CG CD CK CR
|
8
|
+
CI HR CU CY CZ DK DJ DM DO EC EG SV GQ ER EE ET FK FO FJ FI FR GF PF GA
|
9
|
+
GM GE DE GH GI GR GL GD GP GU GT GN GW GY HT VA HN HK HU IS IN ID IR IQ
|
10
|
+
IE IL IT JM JP JO KZ KE KI KP KR KW KG LA LV LB LS LR LY LI LT LU MO MK
|
11
|
+
MG MW MY MV ML MT MH MQ MR MU MX FM MD MC MN MS MA MZ MM NA NR NP NL AN
|
12
|
+
NC NZ NI NE NG NU NF MP NO OM PK PW PA PG PY PE PH PN PL PT PR QA RE RO
|
13
|
+
RU RW SH KN LC PM VC WS SM ST SA SN SC SL SG SK SI SB SO ZA ES LK SD SR
|
14
|
+
SJ SZ SE CH SY TW TJ TZ TH TG TK TO TT TN TR TM TC TV UG UA AE GB US UY
|
15
|
+
UZ VU VE VN VG VI WF EH YE ZM ZW)
|
7
16
|
# This is only a basic validation of a BIC
|
8
17
|
# http://www.swift.com/biconline/index.cfm?fuseaction=display_aboutbic
|
9
18
|
def valid?(bic)
|
10
|
-
country_codes = %w[AF AL DZ AS AD AO AI AG AR AM AW AU AT AZ BS BH BD BB BY BE BZ BJ BM BT BO BA BW BR BN BG BF BI KH CM CA CV KY CF TD CL CN CO KM CG CD CK CR CI HR CU CY CZ DK DJ DM DO EC EG SV GQ ER EE ET FK FO FJ FI FR GF PF GA GM GE DE GH GI GR GL GD GP GU GT GN GW GY HT VA HN HK HU IS IN ID IR IQ IE IL IT JM JP JO KZ KE KI KP KR KW KG LA LV LB LS LR LY LI LT LU MO MK MG MW MY MV ML MT MH MQ MR MU MX FM MD MC MN MS MA MZ MM NA NR NP NL AN NC NZ NI NE NG NU NF MP NO OM PK PW PA PG PY PE PH PN PL PT PR QA RE RO RU RW SH KN LC PM VC WS SM ST SA SN SC SL SG SK SI SB SO ZA ES LK SD SR SJ SZ SE CH SY TW TJ TZ TH TG TK TO TT TN TR TM TC TV UG UA AE GB US UY UZ VU VE VN VG VI WF EH YE ZM ZW]
|
11
19
|
return false unless bic.size == 8 || bic.size == 11 # length 8 or 11
|
12
|
-
return false unless (bic[0..3]=~(/[^A-Z]/)).nil? # first 4 must be letters only
|
13
|
-
|
14
|
-
false
|
20
|
+
return false unless (bic[0..3] =~ (/[^A-Z]/)).nil? # first 4 must be letters only
|
21
|
+
COUNTRY_CODES.include?(bic[4..5])
|
15
22
|
end
|
16
|
-
|
17
23
|
end
|
18
24
|
end
|
19
|
-
end
|
25
|
+
end
|
@@ -20,30 +20,29 @@ module ActiveModel
|
|
20
20
|
# pozitia treisprezece din CNP-ul initial.
|
21
21
|
def valid?(cnp)
|
22
22
|
return false unless well_formed?(cnp) && valid_birthdate?(cnp)
|
23
|
-
|
24
23
|
(0..11).inject(0){|sum, n| sum += TEST_KEY[n].chr.to_i * cnp[n].chr.to_i} % 11 == cnp[12].chr.to_i
|
25
24
|
end
|
26
25
|
|
27
|
-
|
26
|
+
private
|
28
27
|
|
29
|
-
|
30
|
-
|
31
|
-
|
28
|
+
def well_formed?(cnp)
|
29
|
+
(cnp =~ (/[^0-9]/)).nil? && cnp.size == 13
|
30
|
+
end
|
32
31
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
32
|
+
def valid_birthdate?(cnp)
|
33
|
+
year_code = cnp[0].chr.to_i
|
34
|
+
year = case year_code
|
35
|
+
when 1..2 then "19"
|
36
|
+
when 3..4 then "18"
|
37
|
+
when 5..6 then "20"
|
38
|
+
when 9 then "19" # oare se sare peste un an bisect intre 1800-2099 ?
|
39
|
+
else return false
|
40
|
+
end
|
41
|
+
year = (year + cnp[1..2]).to_i
|
42
|
+
Date.valid_civil?(year, cnp[3..4].to_i, cnp[5..6].to_i) ? true : false
|
43
|
+
rescue ArgumentError
|
44
|
+
return false
|
45
|
+
end
|
47
46
|
|
48
47
|
end
|
49
48
|
end
|
@@ -3,7 +3,7 @@ module ActiveModel
|
|
3
3
|
class IbanValidator < EachValidator
|
4
4
|
|
5
5
|
# use ord for ruby >= 1.9
|
6
|
-
USE_ORD =
|
6
|
+
USE_ORD = ''.respond_to?(:ord)
|
7
7
|
|
8
8
|
include ActiveModel::Validations::EmptyBlankEachValidator
|
9
9
|
|
@@ -16,16 +16,15 @@ module ActiveModel
|
|
16
16
|
false
|
17
17
|
end
|
18
18
|
|
19
|
-
|
19
|
+
private
|
20
20
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
end
|
21
|
+
# replace letters according to algorithm
|
22
|
+
# algorithm conversion maps chars to ASCII value - 55
|
23
|
+
def transpose(iban)
|
24
|
+
iban.upcase.gsub(/[A-Z]/) do |s|
|
25
|
+
USE_ORD ? (s[0].ord - 55).to_s : (s[0].to_i - 55).to_s
|
27
26
|
end
|
28
|
-
|
27
|
+
end
|
29
28
|
end
|
30
29
|
end
|
31
|
-
end
|
30
|
+
end
|
data/lib/romanianvalidators.rb
CHANGED
@@ -10,10 +10,10 @@ module ActiveModel
|
|
10
10
|
def validate_each(record, attribute, value)
|
11
11
|
allow_blank = options.fetch(:allow_blank, false)
|
12
12
|
allow_nil = options.fetch(:allow_nil, false)
|
13
|
-
message = options.fetch(:message,
|
14
|
-
record.errors.add_on_empty(attribute) if value.nil? && !allow_nil
|
15
|
-
record.errors.add_on_blank(attribute) if value.blank? && !allow_blank
|
16
|
-
record.errors.add(attribute, message) unless valid?(value)
|
13
|
+
message = options.fetch(:message, :invalid)
|
14
|
+
record.errors.add_on_empty(attribute) && return if value.nil? && !allow_nil
|
15
|
+
record.errors.add_on_blank(attribute) && return if value.blank? && !allow_blank
|
16
|
+
record.errors.add(attribute, message) && return unless valid?(value)
|
17
17
|
end
|
18
18
|
end
|
19
19
|
|
@@ -24,8 +24,8 @@ module ActiveModel
|
|
24
24
|
module HelperMethods
|
25
25
|
ActiveModel::Validations.romanianvalidators.each do |validator|
|
26
26
|
define_method('validates_' + validator) do |*fields|
|
27
|
-
options ||= (fields.delete
|
28
|
-
args = fields.push(
|
27
|
+
options ||= (fields.delete(fields.find { |f| f.is_a? Hash })) || true
|
28
|
+
args = fields.push(validator => options)
|
29
29
|
validates(*args)
|
30
30
|
end
|
31
31
|
end
|
data/romanianvalidators.gemspec
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
Gem::Specification.new do |s|
|
3
3
|
s.name = 'romanianvalidators'
|
4
|
-
s.version = '0.1.
|
4
|
+
s.version = '0.1.5'
|
5
5
|
s.authors = ['Mihai Târnovan']
|
6
6
|
s.email = ['mihai.tarnovan@cubus.ro']
|
7
7
|
s.homepage = 'http://github.com/mtarnovan/romanianvalidators'
|
data/test/test_helper.rb
CHANGED
metadata
CHANGED
@@ -1,69 +1,69 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: romanianvalidators
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mihai Târnovan
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2014-10-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- -
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- -
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: minitest
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- -
|
31
|
+
- - ">="
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: '0'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- -
|
38
|
+
- - ">="
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: rake
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
47
|
version: 0.8.7
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
54
|
version: 0.8.7
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: activemodel
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
61
|
version: 3.0.0
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 3.0.0
|
69
69
|
description: Collection of validations for Cod Numeric Personal (CNP), Cod de identificare
|
@@ -75,8 +75,10 @@ executables: []
|
|
75
75
|
extensions: []
|
76
76
|
extra_rdoc_files: []
|
77
77
|
files:
|
78
|
-
- .gitignore
|
79
|
-
- .
|
78
|
+
- ".gitignore"
|
79
|
+
- ".ruby-gemset"
|
80
|
+
- ".ruby-version"
|
81
|
+
- ".travis.yml"
|
80
82
|
- CHANGELOG.md
|
81
83
|
- Gemfile
|
82
84
|
- LICENSE
|
@@ -107,17 +109,17 @@ require_paths:
|
|
107
109
|
- lib
|
108
110
|
required_ruby_version: !ruby/object:Gem::Requirement
|
109
111
|
requirements:
|
110
|
-
- -
|
112
|
+
- - ">="
|
111
113
|
- !ruby/object:Gem::Version
|
112
114
|
version: '0'
|
113
115
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
116
|
requirements:
|
115
|
-
- -
|
117
|
+
- - ">="
|
116
118
|
- !ruby/object:Gem::Version
|
117
119
|
version: '0'
|
118
120
|
requirements: []
|
119
121
|
rubyforge_project: romanianvalidators
|
120
|
-
rubygems_version: 2.
|
122
|
+
rubygems_version: 2.2.2
|
121
123
|
signing_key:
|
122
124
|
specification_version: 4
|
123
125
|
summary: Collection of validations for Cod Numeric Personal (CNP), Cod de identificare
|