faker_spanish_documents 0.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/.rspec +3 -0
- data/Gemfile +7 -0
- data/Gemfile.lock +38 -0
- data/README.md +25 -0
- data/faker_spanish_documents.gemspec +15 -0
- data/lib/faker_spanish_documents.rb +69 -0
- data/lib/faker_spanish_documents/version.rb +0 -0
- metadata +63 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 2544e5f94aed1c398cabbd6e7ce101a9aa6fc6a5b41cfdfe12fb0fd173ed7147
|
4
|
+
data.tar.gz: ab82a168780f59505d15d0bd097820104b57e348545327467e5d045c17108d3b
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 39891aba45bdd57587d44a53955893bd5113a72580c6b15c4741219c1f10494e6ef73e1d498fe4cc51120363526b76b826bee96300cd20518951a91afce0b35e
|
7
|
+
data.tar.gz: 7319379e3bac40943b7981dc5390a1dc792948f06f7bf73fdcfa51ff3cec3bb044108018abe0ced0dc1ab3765cd76888f1bef2b369da013e15c871a894f8961f
|
data/.rspec
ADDED
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,38 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
faker_spanish_documents (0.1.0)
|
5
|
+
faker (~> 2.18)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: https://rubygems.org/
|
9
|
+
specs:
|
10
|
+
concurrent-ruby (1.1.9)
|
11
|
+
diff-lcs (1.3)
|
12
|
+
faker (2.18.0)
|
13
|
+
i18n (>= 1.6, < 2)
|
14
|
+
i18n (1.8.10)
|
15
|
+
concurrent-ruby (~> 1.0)
|
16
|
+
rspec (3.7.0)
|
17
|
+
rspec-core (~> 3.7.0)
|
18
|
+
rspec-expectations (~> 3.7.0)
|
19
|
+
rspec-mocks (~> 3.7.0)
|
20
|
+
rspec-core (3.7.1)
|
21
|
+
rspec-support (~> 3.7.0)
|
22
|
+
rspec-expectations (3.7.0)
|
23
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
24
|
+
rspec-support (~> 3.7.0)
|
25
|
+
rspec-mocks (3.7.0)
|
26
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
27
|
+
rspec-support (~> 3.7.0)
|
28
|
+
rspec-support (3.7.1)
|
29
|
+
|
30
|
+
PLATFORMS
|
31
|
+
ruby
|
32
|
+
|
33
|
+
DEPENDENCIES
|
34
|
+
faker_spanish_documents!
|
35
|
+
rspec
|
36
|
+
|
37
|
+
BUNDLED WITH
|
38
|
+
2.1.4
|
data/README.md
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
# Faker::SpanishDocuments
|
2
|
+
|
3
|
+
Gem to generate fake spanish documents as DNI, CIF or NIE. It's based on the well-known gem [Faker](https://github.com/stympy/faker).
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add this line to your application's Gemfile:
|
8
|
+
|
9
|
+
gem 'faker_spanish_documents'
|
10
|
+
|
11
|
+
And then execute:
|
12
|
+
|
13
|
+
$ bundle
|
14
|
+
|
15
|
+
Or install it yourself as:
|
16
|
+
|
17
|
+
$ gem install faker_spanish_documents
|
18
|
+
|
19
|
+
## Usage
|
20
|
+
|
21
|
+
Its use is pretty easy, it exposes three method one for each type of document.
|
22
|
+
```ruby
|
23
|
+
Faker::SpanishDocuments.dni
|
24
|
+
Faker::SpanishDocuments.cif
|
25
|
+
Faker::SpanishDocuments.nie
|
@@ -0,0 +1,15 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = 'faker_spanish_documents'
|
3
|
+
s.version = '0.1.0'
|
4
|
+
s.description = 'A simple faker to generate spanish documents as DNI, NIE or CIF'
|
5
|
+
s.summary = 'Generate valid DNI, NIE or CIF numbers'
|
6
|
+
s.authors = ['F. Padillo']
|
7
|
+
s.email = 'fpadillo@nosolosoftware.es'
|
8
|
+
s.homepage = 'https://github.com/nosolosoftware/faker_spanish'
|
9
|
+
s.license = 'MIT'
|
10
|
+
s.files = `git ls-files -z`.split("\x0").reject do |f|
|
11
|
+
f.match(%r{^(test|spec|features)/})
|
12
|
+
end
|
13
|
+
|
14
|
+
s.add_dependency 'faker', '~> 2.18'
|
15
|
+
end
|
@@ -0,0 +1,69 @@
|
|
1
|
+
require 'faker'
|
2
|
+
require 'faker_spanish_documents/version'
|
3
|
+
|
4
|
+
module Faker
|
5
|
+
class SpanishDocuments
|
6
|
+
NIF_LETTERS = 'TRWAGMYFPDXBNJZSQVHLCKE'.freeze
|
7
|
+
NIE_LETTERS = %w[X Y Z].freeze
|
8
|
+
CIF_LETTERS = %w[A B C D E F G H J N P Q R S U V W].freeze
|
9
|
+
CIF_LETTERS_NUMBER = 'PQSW'.freeze
|
10
|
+
CIF_CONTROL_LETTERS = 'JABCDEFGHI'.freeze
|
11
|
+
|
12
|
+
class << self
|
13
|
+
def dni
|
14
|
+
number = Faker::Number.number(digits: 8).to_i
|
15
|
+
"#{number}#{nif_letter(number)}"
|
16
|
+
end
|
17
|
+
|
18
|
+
def nie(letter=nil)
|
19
|
+
first_letter = letter && NIE_LETTERS.include?(letter) ? letter : NIE_LETTERS.sample
|
20
|
+
first_number = NIE_LETTERS.find_index { |e| e == first_letter }
|
21
|
+
number_part = Faker::Number.number(digits: 7)
|
22
|
+
number_for_calculation = "#{first_number}#{number_part}".to_i
|
23
|
+
|
24
|
+
"#{first_letter}#{number_part}#{nif_letter(number_for_calculation)}"
|
25
|
+
end
|
26
|
+
|
27
|
+
def cif(letter=nil)
|
28
|
+
first_letter = letter && CIF_LETTERS.include?(letter) ? letter : CIF_LETTERS.sample
|
29
|
+
province_code = Faker::Number.number(digits: 2)
|
30
|
+
random_number = Faker::Number.number(digits: 5)
|
31
|
+
number = "#{province_code}#{random_number}"
|
32
|
+
|
33
|
+
control_code = cif_control_code(number, first_letter)
|
34
|
+
|
35
|
+
"#{first_letter}#{number}#{control_code}"
|
36
|
+
end
|
37
|
+
|
38
|
+
private
|
39
|
+
|
40
|
+
def cif_control_code(number, first_letter)
|
41
|
+
total = number
|
42
|
+
.split('')
|
43
|
+
.each_with_index
|
44
|
+
.inject(0) do |acc, (element, index)|
|
45
|
+
acc += if index.even?
|
46
|
+
(element.to_i * 2).digits.inject(:+)
|
47
|
+
else
|
48
|
+
element.to_i
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
decimal = total.digits.first
|
53
|
+
control = decimal != 0 ? 10 - decimal : decimal
|
54
|
+
|
55
|
+
if CIF_LETTERS_NUMBER.include?(first_letter) || number.start_with?('00')
|
56
|
+
# Control code will be a letter
|
57
|
+
CIF_CONTROL_LETTERS[control]
|
58
|
+
else
|
59
|
+
# Control code will be a number
|
60
|
+
control
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def nif_letter(number)
|
65
|
+
NIF_LETTERS[number % NIF_LETTERS.length]
|
66
|
+
end
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
File without changes
|
metadata
ADDED
@@ -0,0 +1,63 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: faker_spanish_documents
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- F. Padillo
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2021-06-30 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: faker
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '2.18'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '2.18'
|
27
|
+
description: A simple faker to generate spanish documents as DNI, NIE or CIF
|
28
|
+
email: fpadillo@nosolosoftware.es
|
29
|
+
executables: []
|
30
|
+
extensions: []
|
31
|
+
extra_rdoc_files: []
|
32
|
+
files:
|
33
|
+
- ".rspec"
|
34
|
+
- Gemfile
|
35
|
+
- Gemfile.lock
|
36
|
+
- README.md
|
37
|
+
- faker_spanish_documents.gemspec
|
38
|
+
- lib/faker_spanish_documents.rb
|
39
|
+
- lib/faker_spanish_documents/version.rb
|
40
|
+
homepage: https://github.com/nosolosoftware/faker_spanish
|
41
|
+
licenses:
|
42
|
+
- MIT
|
43
|
+
metadata: {}
|
44
|
+
post_install_message:
|
45
|
+
rdoc_options: []
|
46
|
+
require_paths:
|
47
|
+
- lib
|
48
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
49
|
+
requirements:
|
50
|
+
- - ">="
|
51
|
+
- !ruby/object:Gem::Version
|
52
|
+
version: '0'
|
53
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
54
|
+
requirements:
|
55
|
+
- - ">="
|
56
|
+
- !ruby/object:Gem::Version
|
57
|
+
version: '0'
|
58
|
+
requirements: []
|
59
|
+
rubygems_version: 3.1.2
|
60
|
+
signing_key:
|
61
|
+
specification_version: 4
|
62
|
+
summary: Generate valid DNI, NIE or CIF numbers
|
63
|
+
test_files: []
|