validate_spanish_vat 0.0.1

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/.gitignore ADDED
@@ -0,0 +1,5 @@
1
+ *.gem
2
+ .bundle
3
+ Gemfile.lock
4
+ pkg/*
5
+ *.swp
data/Gemfile ADDED
@@ -0,0 +1,4 @@
1
+ source "http://rubygems.org"
2
+
3
+ # Specify your gem's dependencies in validate_spanish_vat.gemspec
4
+ gemspec
data/README ADDED
File without changes
data/Rakefile ADDED
@@ -0,0 +1 @@
1
+ require 'bundler/gem_tasks'
@@ -0,0 +1,53 @@
1
+ require "validate_spanish_vat/version"
2
+
3
+ module ValidateSpanishVat
4
+
5
+ def self.validate(value)
6
+ case
7
+ when value.match(/[0-9]{8}[a-z]/i)
8
+ return validate_nif(value)
9
+ when value.match(/[a-wyz][0-9]{7}[0-9a-z]/i)
10
+ return validate_cif(value)
11
+ when value.match(/[x][0-9]{7,8}[a-z]/i)
12
+ return validate_nie(value)
13
+ end
14
+ return false
15
+ end
16
+
17
+ def self.validate_nif(value)
18
+ letters = "TRWAGMYFPDXBNJZSQVHLCKE"
19
+ check = value.slice!(value.length - 1..value.length - 1).upcase
20
+ calculated_letter = letters[value.to_i % 23].chr
21
+
22
+ return check === calculated_letter
23
+ end
24
+
25
+ def self.validate_cif(value)
26
+ letter = value.slice!(0).chr.upcase
27
+ check = value.slice!(value.length - 1).chr.upcase
28
+
29
+ n1 = n2 = 0
30
+ for idx in 0..value.length - 1
31
+ number = value.slice!(0).chr.to_i
32
+ if (idx % 2) != 0
33
+ n1 += number
34
+ else
35
+ n2 += ((2*number) % 10) + ((2 * number) / 10)
36
+ end
37
+ end
38
+ calculated_number = (10 - ((n1 + n2) % 10)) % 10
39
+ calculated_letter = (64 + calculated_number).chr
40
+
41
+ if letter.match(/[QPNS]/)
42
+ return check.to_s == calculated_letter.to_s
43
+ else
44
+ return check.to_i == calculated_number.to_i
45
+ end
46
+ end
47
+
48
+ def self.validate_nie(value)
49
+ value[0] = '0'
50
+ value.slice(0) if value.size > 9
51
+ validate_nif(value)
52
+ end
53
+ end
@@ -0,0 +1,3 @@
1
+ module ValidateSpanishVat
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,20 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require "validate_spanish_vat/version"
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = "validate_spanish_vat"
7
+ s.version = ValidateSpanishVat::VERSION
8
+ s.authors = ["Antonio Pardo"]
9
+ s.email = ["apardo@alabs.es"]
10
+ s.homepage = "https://github.com/alabs/validate_spanish_vat"
11
+ s.summary = %q{Valida NIF, CIf y NIE españoles}
12
+ s.description = %q{Valida NIF, CIF y NIE españoles}
13
+
14
+ s.rubyforge_project = "validate_spanish_vat"
15
+
16
+ s.files = `git ls-files`.split("\n")
17
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
18
+ s.executables = `git ls-files -- bin/*`.split("\n").map{ |f| File.basename(f) }
19
+ s.require_paths = ["lib"]
20
+ end
metadata ADDED
@@ -0,0 +1,74 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: validate_spanish_vat
3
+ version: !ruby/object:Gem::Version
4
+ hash: 29
5
+ prerelease:
6
+ segments:
7
+ - 0
8
+ - 0
9
+ - 1
10
+ version: 0.0.1
11
+ platform: ruby
12
+ authors:
13
+ - Antonio Pardo
14
+ autorequire:
15
+ bindir: bin
16
+ cert_chain: []
17
+
18
+ date: 2011-07-20 00:00:00 +02:00
19
+ default_executable:
20
+ dependencies: []
21
+
22
+ description: "Valida NIF, CIF y NIE espa\xC3\xB1oles"
23
+ email:
24
+ - apardo@alabs.es
25
+ executables: []
26
+
27
+ extensions: []
28
+
29
+ extra_rdoc_files: []
30
+
31
+ files:
32
+ - .gitignore
33
+ - Gemfile
34
+ - README
35
+ - Rakefile
36
+ - lib/validate_spanish_vat.rb
37
+ - lib/validate_spanish_vat/version.rb
38
+ - validate_spanish_vat.gemspec
39
+ has_rdoc: true
40
+ homepage: https://github.com/alabs/validate_spanish_vat
41
+ licenses: []
42
+
43
+ post_install_message:
44
+ rdoc_options: []
45
+
46
+ require_paths:
47
+ - lib
48
+ required_ruby_version: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ">="
52
+ - !ruby/object:Gem::Version
53
+ hash: 3
54
+ segments:
55
+ - 0
56
+ version: "0"
57
+ required_rubygems_version: !ruby/object:Gem::Requirement
58
+ none: false
59
+ requirements:
60
+ - - ">="
61
+ - !ruby/object:Gem::Version
62
+ hash: 3
63
+ segments:
64
+ - 0
65
+ version: "0"
66
+ requirements: []
67
+
68
+ rubyforge_project: validate_spanish_vat
69
+ rubygems_version: 1.6.2
70
+ signing_key:
71
+ specification_version: 3
72
+ summary: "Valida NIF, CIf y NIE espa\xC3\xB1oles"
73
+ test_files: []
74
+