romanianvalidators 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +0 -4
- data/CHANGELOG.md +3 -0
- data/lib/active_model/validations/cnp_validator.rb +14 -12
- data/romanianvalidators.gemspec +1 -1
- data/test/data/valid_cnps.txt +57 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b6f0345b9d1c418dd361412bdcf98b68134a099b
|
4
|
+
data.tar.gz: 9c44ad509cbed0a6ffb8456995ce78099b122714
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6ca4dc092344fe15b1803c86f48df7de87b3373ae6c5074903d04c11dca5618f44af1201543d58a9112b1187c176c3d1b4608f938166ee794ff65147c13f5b0f
|
7
|
+
data.tar.gz: b2bc80c161f204a22b82d572b4d753dc824302481dc58e3a11ef0d499f42bdc13185ae115e4f95077f4e9d1d8ae7e353e75c5d225da6ac2adbd1bda45b98cce0
|
data/.travis.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
module ActiveModel
|
2
2
|
module Validations
|
3
3
|
class CnpValidator < EachValidator
|
4
|
-
|
5
|
-
TEST_KEY = "279146358279"
|
4
|
+
TEST_KEY = '279146358279'.each_char.map(&:to_i)
|
6
5
|
|
7
6
|
include ActiveModel::Validations::EmptyBlankEachValidator
|
8
7
|
|
@@ -15,12 +14,16 @@ module ActiveModel
|
|
15
14
|
# Se foloseste cheia de testare "279146358279". Primele douasprezece cifre se inmultesc pe rand de la
|
16
15
|
# stanga spre dreapta cu cifra corespunzatoare din cheia de testare.
|
17
16
|
#
|
18
|
-
# Pas 2: Cele douasprezece produse obtinute se aduna si suma obtinuta se imparte la 11.
|
19
|
-
#
|
20
|
-
#
|
17
|
+
# Pas 2: Cele douasprezece produse obtinute se aduna si suma obtinuta se imparte la 11.
|
18
|
+
# * Daca restul impartirii la 11 este mai mic ca 10, atunci acesta va reprezenta cifra de control.
|
19
|
+
# * Daca restul impartirii este 10 atunci cifra de control este 1.
|
20
|
+
# Restul impartirii reprezinta cifra de control. Pentru un CNP valid acest rest va trebui
|
21
|
+
# sa coincida cu cifra de pe pozitia treisprezece din CNP-ul initial.
|
21
22
|
def valid?(cnp)
|
22
23
|
return false unless well_formed?(cnp) && valid_birthdate?(cnp)
|
23
|
-
(0..11).
|
24
|
+
control = (0..11).reduce(0) { |a, e| a + TEST_KEY[e] * cnp[e].chr.to_i } % 11
|
25
|
+
control = 1 if control == 10
|
26
|
+
control == cnp[12].chr.to_i
|
24
27
|
end
|
25
28
|
|
26
29
|
private
|
@@ -32,10 +35,10 @@ module ActiveModel
|
|
32
35
|
def valid_birthdate?(cnp)
|
33
36
|
year_code = cnp[0].chr.to_i
|
34
37
|
year = case year_code
|
35
|
-
when 1..2 then
|
36
|
-
when 3..4 then
|
37
|
-
when 5..6 then
|
38
|
-
when 9 then
|
38
|
+
when 1..2 then '19'
|
39
|
+
when 3..4 then '18'
|
40
|
+
when 5..6 then '20'
|
41
|
+
when 9 then '19' # oare se sare peste un an bisect intre 1800-2099 ?
|
39
42
|
else return false
|
40
43
|
end
|
41
44
|
year = (year + cnp[1..2]).to_i
|
@@ -43,7 +46,6 @@ module ActiveModel
|
|
43
46
|
rescue ArgumentError
|
44
47
|
return false
|
45
48
|
end
|
46
|
-
|
47
49
|
end
|
48
50
|
end
|
49
|
-
end
|
51
|
+
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.6'
|
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/data/valid_cnps.txt
CHANGED
@@ -3,4 +3,60 @@
|
|
3
3
|
1910320258878
|
4
4
|
1900731088752
|
5
5
|
1911104133697
|
6
|
-
1920822296090
|
6
|
+
1920822296090
|
7
|
+
2891208132051
|
8
|
+
1920304263831
|
9
|
+
1891217192767
|
10
|
+
1921011092055
|
11
|
+
1860109269659
|
12
|
+
1900601056845
|
13
|
+
1880604103415
|
14
|
+
1880721136275
|
15
|
+
1850525122042
|
16
|
+
1861218247359
|
17
|
+
1881015253624
|
18
|
+
1870516244583
|
19
|
+
1860712316588
|
20
|
+
1880604291702
|
21
|
+
1850720124541
|
22
|
+
1851005206236
|
23
|
+
1860421127483
|
24
|
+
1860802176257
|
25
|
+
1880722023772
|
26
|
+
1920821238709
|
27
|
+
1920513112249
|
28
|
+
1891116203323
|
29
|
+
1870526416985
|
30
|
+
1901222053823
|
31
|
+
1910222155466
|
32
|
+
1891103357563
|
33
|
+
1851112026144
|
34
|
+
1861004286635
|
35
|
+
1881106241130
|
36
|
+
1850917352822
|
37
|
+
1870626195295
|
38
|
+
1860726329931
|
39
|
+
1901028015659
|
40
|
+
1860607177247
|
41
|
+
1910807246873
|
42
|
+
1890419224870
|
43
|
+
1860423292119
|
44
|
+
1910209225248
|
45
|
+
1890712354318
|
46
|
+
1920828092680
|
47
|
+
1860404127309
|
48
|
+
1860718234273
|
49
|
+
1920205386704
|
50
|
+
1920813346694
|
51
|
+
1930517148179
|
52
|
+
1850302286199
|
53
|
+
1890507112448
|
54
|
+
1900119416106
|
55
|
+
1921207191179
|
56
|
+
1870827113584
|
57
|
+
1930401155693
|
58
|
+
1920404023634
|
59
|
+
1870807402772
|
60
|
+
1920316217606
|
61
|
+
1920603061730
|
62
|
+
1890628151821
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
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.6
|
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: 2014-
|
11
|
+
date: 2014-12-15 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|