faker_spanish_documents 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
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
@@ -0,0 +1,3 @@
1
+ --format documentation
2
+ --color
3
+ --require spec_helper
data/Gemfile ADDED
@@ -0,0 +1,7 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
4
+
5
+ group :development, :test do
6
+ gem 'rspec'
7
+ end
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: []