Class: Faker::IDNumber
- Inherits:
-
Base
- Object
- Base
- Faker::IDNumber
show all
- Defined in:
- lib/faker/default/id_number.rb
Constant Summary
collapse
- CHECKS =
'TRWAGMYFPDXBNJZSQVHLCKE'
- INVALID_SSN =
[
/0{3}-\d{2}-\d{4}/,
/\d{3}-0{2}-\d{4}/,
/\d{3}-\d{2}-0{4}/,
/666-\d{2}-\d{4}/,
/9\d{2}-\d{2}-\d{4}/
].freeze
- ZA_RACE_DIGIT =
'8'
- ZA_CITIZENSHIP_DIGITS =
%w[0 1].freeze
- BRAZILIAN_ID_FORMAT =
/(\d{1,2})(\d{3})(\d{3})([\dX])/.freeze
- BRAZILIAN_ID_FROM =
10_000_000
- BRAZILIAN_ID_TO =
99_999_999
- CHILEAN_MODULO =
11
Constants inherited
from Base
Base::LLetters, Base::Letters, Base::NOT_GIVEN, Base::Numbers, Base::ULetters
Class Method Summary
collapse
Methods inherited from Base
bothify, disable_enforce_available_locales, fetch, fetch_all, flexible, letterify, method_missing, numerify, parse, rand, rand_in_range, regexify, resolve, respond_to_missing?, sample, shuffle, translate, unique, with_locale
Class Method Details
.brazilian_citizen_number(legacy_formatted = NOT_GIVEN, formatted: false) ⇒ Object
Also known as:
brazilian_cpf
83
84
85
86
87
88
89
90
91
92
93
|
# File 'lib/faker/default/id_number.rb', line 83
def brazilian_citizen_number(legacy_formatted = NOT_GIVEN, formatted: false)
warn_for_deprecated_arguments do |keywords|
keywords << :formatted if legacy_formatted != NOT_GIVEN
end
digits = Faker::Number.leading_zero_number(digits: 9) until digits&.match(/(\d)((?!\1)\d)+/)
first_digit = brazilian_citizen_number_checksum_digit(digits)
second_digit = brazilian_citizen_number_checksum_digit(digits + first_digit)
number = [digits, first_digit, second_digit].join
formatted ? format('%s.%s.%s-%s', *number.scan(/\d{2,3}/).flatten) : number
end
|
.brazilian_id(legacy_formatted = NOT_GIVEN, formatted: false) ⇒ Object
Also known as:
brazilian_rg
97
98
99
100
101
102
103
104
105
106
|
# File 'lib/faker/default/id_number.rb', line 97
def brazilian_id(legacy_formatted = NOT_GIVEN, formatted: false)
warn_for_deprecated_arguments do |keywords|
keywords << :formatted if legacy_formatted != NOT_GIVEN
end
digits = Faker::Number.between(to: BRAZILIAN_ID_FROM, from: BRAZILIAN_ID_TO).to_s
check_digit = brazilian_id_checksum_digit(digits)
number = [digits, check_digit].join
formatted ? format('%s.%s.%s-%s', *number.scan(BRAZILIAN_ID_FORMAT).flatten) : number
end
|
.chilean_id ⇒ Object
110
111
112
113
114
115
|
# File 'lib/faker/default/id_number.rb', line 110
def chilean_id
digits = Faker::Number.number(digits: 8)
verification_code = chilean_verification_code(digits)
digits.to_s + '-' + verification_code.to_s
end
|
.invalid ⇒ Object
26
27
28
|
# File 'lib/faker/default/id_number.rb', line 26
def invalid
_translate('invalid')
end
|
.invalid_south_african_id_number ⇒ Object
.spanish_citizen_number ⇒ Object
36
37
38
39
40
41
|
# File 'lib/faker/default/id_number.rb', line 36
def spanish_citizen_number
num = Faker::Number.number(digits: 8)
mod = num.to_i % 23
check = CHECKS[mod]
"#{num}-#{check}"
end
|
.spanish_foreign_citizen_number ⇒ Object
43
44
45
46
47
48
49
50
51
|
# File 'lib/faker/default/id_number.rb', line 43
def spanish_foreign_citizen_number
code = 'XYZ'
digits = Faker::Number.number(digits: 7)
prefix = code[rand(code.length)]
prefix_val = 'XYZ'.index(prefix).to_s
mod = "#{prefix_val}#{digits}".to_i % 23
check = CHECKS[mod]
"#{prefix}-#{digits}-#{check}"
end
|
.ssn_valid ⇒ Object
30
31
32
33
34
|
# File 'lib/faker/default/id_number.rb', line 30
def ssn_valid
ssn = regexify(/[0-8]\d{2}-\d{2}-\d{4}/)
INVALID_SSN.any? { |regex| regex =~ ssn } ? ssn_valid : ssn
end
|
.valid ⇒ Object
22
23
24
|
# File 'lib/faker/default/id_number.rb', line 22
def valid
_translate('valid')
end
|
.valid_south_african_id_number ⇒ Object
Also known as:
south_african_id_number