spanish_vat_validators 0.0.1 → 0.0.2
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 +19 -19
- data/lib/spanish_vat_validators.rb +14 -7
- data/lib/spanish_vat_validators/version.rb +1 -1
- metadata +2 -2
data/README.md
CHANGED
@@ -30,25 +30,25 @@ Or install it yourself as:
|
|
30
30
|
|
31
31
|
Just use any of the following validators.
|
32
32
|
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
33
|
+
# A person id
|
34
|
+
class Person < ActiveRecord::Base
|
35
|
+
validates :dni, :valid_nif => true
|
36
|
+
end
|
37
|
+
|
38
|
+
# A company id
|
39
|
+
class Company < ActiveRecord::Base
|
40
|
+
validates :cif, :valid_cif => true
|
41
|
+
end
|
42
|
+
|
43
|
+
# A foreigner id
|
44
|
+
class Alien < ActiveRecord::Base
|
45
|
+
validates :nie, :valid_nie => true
|
46
|
+
end
|
47
|
+
|
48
|
+
# Any kind of id is valid
|
49
|
+
class SpanishSubject < ActiveRecord::Base
|
50
|
+
validates :id, :valid_spanish_vat => true
|
51
|
+
end
|
52
52
|
|
53
53
|
## Contributing
|
54
54
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
#encoding: utf-8
|
1
2
|
require "spanish_vat_validators/version"
|
2
3
|
|
3
4
|
module ActiveModel::Validations
|
@@ -8,7 +9,9 @@ module ActiveModel::Validations
|
|
8
9
|
end
|
9
10
|
|
10
11
|
# Validates NIF
|
11
|
-
def validate_nif(
|
12
|
+
def validate_nif(v)
|
13
|
+
return false if v.nil? || v.empty?
|
14
|
+
value = v.clone
|
12
15
|
return false unless value.match(/[0-9]{8}[a-z]/i)
|
13
16
|
letters = "TRWAGMYFPDXBNJZSQVHLCKE"
|
14
17
|
check = value.slice!(value.length - 1..value.length - 1).upcase
|
@@ -17,7 +20,9 @@ module ActiveModel::Validations
|
|
17
20
|
end
|
18
21
|
|
19
22
|
# Validates CIF
|
20
|
-
def validate_cif(
|
23
|
+
def validate_cif(v)
|
24
|
+
return false if v.nil? || v.empty?
|
25
|
+
value = v.clone
|
21
26
|
return false unless value.match(/[a-wyz][0-9]{7}[0-9a-z]/i)
|
22
27
|
pares = 0
|
23
28
|
impares = 0
|
@@ -49,7 +54,9 @@ module ActiveModel::Validations
|
|
49
54
|
|
50
55
|
# Validates NIE, in fact is a fake, a NIE is really a NIF with first number changed to capital 'X' letter, so we change the first X to a 0 and then try to
|
51
56
|
# pass the nif validator
|
52
|
-
def validate_nie(
|
57
|
+
def validate_nie(v)
|
58
|
+
return false if v.nil? || v.empty?
|
59
|
+
value = v.clone
|
53
60
|
return false unless value.match(/[x][0-9]{7,8}[a-z]/i)
|
54
61
|
value[0] = '0'
|
55
62
|
value.slice(0) if value.size > 9
|
@@ -61,7 +68,7 @@ module ActiveModel::Validations
|
|
61
68
|
class ValidSpanishVatValidator < ActiveModel::EachValidator
|
62
69
|
include SpanishVatValidatorsHelpers
|
63
70
|
def validate_each(record, attribute, value)
|
64
|
-
record.errors[attribute] = message unless validate_nif(value
|
71
|
+
record.errors[attribute] = message unless validate_nif(value) or validate_cif(value) or validate_nie(value)
|
65
72
|
end
|
66
73
|
end
|
67
74
|
|
@@ -69,7 +76,7 @@ module ActiveModel::Validations
|
|
69
76
|
class ValidNifValidator < ActiveModel::EachValidator
|
70
77
|
include SpanishVatValidatorsHelpers
|
71
78
|
def validate_each(record, attribute,value)
|
72
|
-
record.errors[attribute] = message('nif') unless validate_nif(value
|
79
|
+
record.errors[attribute] = message('nif') unless validate_nif(value)
|
73
80
|
end
|
74
81
|
end
|
75
82
|
|
@@ -77,7 +84,7 @@ module ActiveModel::Validations
|
|
77
84
|
class ValidCifValidator < ActiveModel::EachValidator
|
78
85
|
include SpanishVatValidatorsHelpers
|
79
86
|
def validate_each(record, attribute,value)
|
80
|
-
record.errors[attribute] = message('cif') unless validate_cif(value
|
87
|
+
record.errors[attribute] = message('cif') unless validate_cif(value)
|
81
88
|
end
|
82
89
|
end
|
83
90
|
|
@@ -85,7 +92,7 @@ module ActiveModel::Validations
|
|
85
92
|
class ValidNieValidator < ActiveModel::EachValidator
|
86
93
|
include SpanishVatValidatorsHelpers
|
87
94
|
def validate_each(record, attribute,value)
|
88
|
-
record.errors[attribute] = message('nie') unless validate_cif(value
|
95
|
+
record.errors[attribute] = message('nie') unless validate_cif(value)
|
89
96
|
end
|
90
97
|
end
|
91
98
|
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: spanish_vat_validators
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-08-25 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Provides validators for spanish VAT numbers (NIF, CIF and NIE)
|
15
15
|
email:
|