Skip to content

Commit

Permalink
Merge branch 'faker-ruby:main' into main
Browse files Browse the repository at this point in the history
  • Loading branch information
kirkkwang authored Feb 25, 2024
2 parents 1a43e22 + f586da7 commit 838bbf3
Show file tree
Hide file tree
Showing 17 changed files with 724 additions and 85 deletions.
4 changes: 2 additions & 2 deletions Gemfile
Original file line number Diff line number Diff line change
Expand Up @@ -6,13 +6,13 @@ source 'https://rubygems.org'
gemspec

gem 'benchmark'
gem 'minitest', '5.21.2'
gem 'minitest', '5.22.2'
gem 'pry', '0.14.2'
gem 'rake', '13.1.0'
gem 'rubocop', '1.60.2'
gem 'rubocop-minitest', '0.34.4'
gem 'rubocop-rake', '0.6.0'
gem 'simplecov', '0.22.0'
gem 'test-unit', '3.6.1'
gem 'test-unit', '3.6.2'
gem 'timecop', '0.9.8'
gem 'yard', '0.9.34'
8 changes: 4 additions & 4 deletions Gemfile.lock
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ GEM
json (2.7.1)
language_server-protocol (3.17.0.3)
method_source (1.0.0)
minitest (5.21.2)
minitest (5.22.2)
parallel (1.24.0)
parser (3.3.0.5)
ast (~> 2.4.1)
Expand Down Expand Up @@ -56,7 +56,7 @@ GEM
simplecov_json_formatter (~> 0.1)
simplecov-html (0.12.3)
simplecov_json_formatter (0.1.4)
test-unit (3.6.1)
test-unit (3.6.2)
power_assert
timecop (0.9.8)
unicode-display_width (2.5.0)
Expand All @@ -69,14 +69,14 @@ PLATFORMS
DEPENDENCIES
benchmark
faker!
minitest (= 5.21.2)
minitest (= 5.22.2)
pry (= 0.14.2)
rake (= 13.1.0)
rubocop (= 1.60.2)
rubocop-minitest (= 0.34.4)
rubocop-rake (= 0.6.0)
simplecov (= 0.22.0)
test-unit (= 3.6.1)
test-unit (= 3.6.2)
timecop (= 0.9.8)
yard (= 0.9.34)

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -248,7 +248,7 @@ gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'main
- [Faker::Hipster](doc/default/hipster.md)
- [Faker::Hobby](doc/default/hobby.md)
- [Faker::House](doc/default/house.md)
- [Faker::IDNumber](doc/default/id_number.md)
- [Faker::IdNumber](doc/default/id_number.md)
- [Faker::IndustrySegments](doc/default/industry_segments.md)
- [Faker::Internet](doc/default/internet.md)
- [Faker::Invoice](doc/default/invoice.md)
Expand Down
40 changes: 20 additions & 20 deletions doc/default/id_number.md
Original file line number Diff line number Diff line change
@@ -1,52 +1,52 @@
# Faker::IDNumber
# Faker::IdNumber

```ruby
# Generate a valid US Social Security number
Faker::IDNumber.valid #=> "552-56-3593"
Faker::IdNumber.valid #=> "552-56-3593"

# Generate an invalid US Social Security number
Faker::IDNumber.invalid #=> "311-72-0000"
Faker::IdNumber.invalid #=> "311-72-0000"

# Generate a Spanish citizen identifier (DNI)
Faker::IDNumber.spanish_citizen_number #=> "53290236-H"
Faker::IdNumber.spanish_citizen_number #=> "53290236-H"

# Generate a Spanish foreign born citizen identifier (NIE)
Faker::IDNumber.spanish_foreign_citizen_number #=> "Z-1600870-Y"
Faker::IdNumber.spanish_foreign_citizen_number #=> "Z-1600870-Y"

# Generate a valid South African ID Number
Faker::IDNumber.south_african_id_number #=> "8105128870184"
Faker::IdNumber.south_african_id_number #=> "8105128870184"
# or
Faker::IDNumber.valid_south_african_id_number #=> "8105128870184"
Faker::IdNumber.valid_south_african_id_number #=> "8105128870184"

# Generate an invalid South African ID Number
Faker::IDNumber.invalid_south_african_id_number #=> "1642972065088"
Faker::IdNumber.invalid_south_african_id_number #=> "1642972065088"

# Generate a Brazilian citizen number (CPF)
# Keyword arguments: formatted
Faker::IDNumber.brazilian_citizen_number #=> "53540542221"
Faker::IDNumber.brazilian_citizen_number(formatted: true) #=> "535.405.422-21"
Faker::IdNumber.brazilian_citizen_number #=> "53540542221"
Faker::IdNumber.brazilian_citizen_number(formatted: true) #=> "535.405.422-21"

# Generate a Brazilian ID Number (RG)
# Keyword arguments: formatted
Faker::IDNumber.brazilian_id #=> "493054029"
Faker::IDNumber.brazilian_id(formatted: true) #=> "49.305.402-9"
Faker::IdNumber.brazilian_id #=> "493054029"
Faker::IdNumber.brazilian_id(formatted: true) #=> "49.305.402-9"

# Generate a Chilean ID (Rut with 8 digits)
# For more advanced cases, please refer to Faker::ChileRut
Faker::IDNumber.chilean_id #=> "15620613-K"
Faker::IdNumber.chilean_id #=> "15620613-K"

# Generate a Croatian ID number (OIB)
# Keyword arguments: international
Faker::IDNumber.croatian_id #=> "88467617508"
Faker::IDNumber.croatian_id(international: true) #=> "HR88467617508"
Faker::IdNumber.croatian_id #=> "88467617508"
Faker::IdNumber.croatian_id(international: true) #=> "HR88467617508"

# Generate a Danish ID number (CPR)
# Keyword arguments: formatted, gender, birthday
Faker::IDNumber.danish_id_number #=> "050390-9980"
Faker::IDNumber.danish_id_number(formatted: true) #=> "050390-9980"
Faker::IDNumber.danish_id_number(birthday: Date.new(1990, 3, 5)) #=> "050390-9980"
Faker::IDNumber.danish_id_number(gender: :female) #=> "050390-9980"
Faker::IdNumber.danish_id_number #=> "050390-9980"
Faker::IdNumber.danish_id_number(formatted: true) #=> "050390-9980"
Faker::IdNumber.danish_id_number(birthday: Date.new(1990, 3, 5)) #=> "050390-9980"
Faker::IdNumber.danish_id_number(gender: :female) #=> "050390-9980"

# Generate a valid French Social Security number (INSEE number)
Faker::IDNumber.french_insee_number #=> "22510589696868"
Faker::IdNumber.french_insee_number #=> "22510589696868"
```
43 changes: 23 additions & 20 deletions lib/faker/default/id_number.rb
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
# frozen_string_literal: true

module Faker
class IDNumber < Base
class IdNumber < Base
CHECKS = 'TRWAGMYFPDXBNJZSQVHLCKE'
INVALID_SSN = [
/0{3}-\d{2}-\d{4}/,
Expand All @@ -25,7 +25,7 @@ class << self
# @return [String]
#
# @example
# Faker::IDNumber.valid #=> "552-56-3593"
# Faker::IdNumber.valid #=> "552-56-3593"
#
# @faker.version 1.6.0
def valid
Expand All @@ -38,7 +38,7 @@ def valid
# @return [String]
#
# @example
# Faker::IDNumber.invalid #=> "311-72-0000"
# Faker::IdNumber.invalid #=> "311-72-0000"
#
# @faker.version 1.6.0
def invalid
Expand Down Expand Up @@ -71,7 +71,7 @@ def ssn_valid
# @return [String]
#
# @example
# Faker::IDNumber.spanish_citizen_number #=> "53290236-H"
# Faker::IdNumber.spanish_citizen_number #=> "53290236-H"
#
# @faker.version 1.9.0
def spanish_citizen_number
Expand All @@ -87,7 +87,7 @@ def spanish_citizen_number
# @return [String]
#
# @example
# Faker::IDNumber.spanish_foreign_citizen_number #=> "Z-1600870-Y"
# Faker::IdNumber.spanish_foreign_citizen_number #=> "Z-1600870-Y"
#
# @faker.version 1.9.0
def spanish_foreign_citizen_number
Expand All @@ -106,8 +106,8 @@ def spanish_foreign_citizen_number
# @return [String]
#
# @example
# Faker::IDNumber.south_african_id_number #=> "8105128870184"
# Faker::IDNumber.valid_south_african_id_number #=> "8105128870184"
# Faker::IdNumber.south_african_id_number #=> "8105128870184"
# Faker::IdNumber.valid_south_african_id_number #=> "8105128870184"
#
# @faker.version 1.9.2
def valid_south_african_id_number
Expand All @@ -129,7 +129,7 @@ def valid_south_african_id_number
# @return [String]
#
# @example
# Faker::IDNumber.invalid_south_african_id_number #=> "1642972065088"
# Faker::IdNumber.invalid_south_african_id_number #=> "1642972065088"
#
# @faker.version 1.9.2
def invalid_south_african_id_number
Expand All @@ -156,8 +156,8 @@ def invalid_south_african_id_number
# @return [String]
#
# @example
# Faker::IDNumber.brazilian_citizen_number #=> "53540542221"
# Faker::IDNumber.brazilian_citizen_number(formatted: true) #=> "535.405.422-21"
# Faker::IdNumber.brazilian_citizen_number #=> "53540542221"
# Faker::IdNumber.brazilian_citizen_number(formatted: true) #=> "535.405.422-21"
#
# @faker.version 1.9.2
def brazilian_citizen_number(formatted: false)
Expand All @@ -177,8 +177,8 @@ def brazilian_citizen_number(formatted: false)
# @return [String]
#
# @example
# Faker::IDNumber.brazilian_id #=> "493054029"
# Faker::IDNumber.brazilian_id(formatted: true) #=> "49.305.402-9"
# Faker::IdNumber.brazilian_id #=> "493054029"
# Faker::IdNumber.brazilian_id(formatted: true) #=> "49.305.402-9"
#
# @faker.version 2.1.2
def brazilian_id(formatted: false)
Expand All @@ -196,7 +196,7 @@ def brazilian_id(formatted: false)
# @return [String]
#
# @example
# Faker::IDNumber.chilean_id #=> "15620613-K"
# Faker::IdNumber.chilean_id #=> "15620613-K"
#
# @faker.version 2.1.2
def chilean_id
Expand All @@ -213,8 +213,8 @@ def chilean_id
# @return [String]
#
# @example
# Faker::IDNumber.croatian_id #=> "88467617508"
# Faker::IDNumber.croatian_id(international: true) #=> "HR88467617508"
# Faker::IdNumber.croatian_id #=> "88467617508"
# Faker::IdNumber.croatian_id(international: true) #=> "HR88467617508"
#
# @faker.version next
def croatian_id(international: false)
Expand All @@ -238,10 +238,10 @@ def croatian_id(international: false)
# @return [String]
#
# @example
# Faker::IDNumber.danish_id_number #=> "0503909980"
# Faker::IDNumber.danish_id_number(formatted: true) #=> "050390-9980"
# Faker::IDNumber.danish_id_number(birthday: Date.new(1990, 3, 5)) #=> "0503909980"
# Faker::IDNumber.danish_id_number(gender: :female) #=> "0503909980"
# Faker::IdNumber.danish_id_number #=> "0503909980"
# Faker::IdNumber.danish_id_number(formatted: true) #=> "050390-9980"
# Faker::IdNumber.danish_id_number(birthday: Date.new(1990, 3, 5)) #=> "0503909980"
# Faker::IdNumber.danish_id_number(gender: :female) #=> "0503909980"
#
# @faker.version next
def danish_id_number(formatted: false, birthday: Faker::Date.birthday, gender: nil)
Expand Down Expand Up @@ -275,7 +275,7 @@ def danish_id_number(formatted: false, birthday: Faker::Date.birthday, gender: n
# @return [String]
#
# @example
# Faker::IDNumber.french_insee_number #=> "53290236-H"
# Faker::IdNumber.french_insee_number #=> "53290236-H"
#
# @faker.version next
def french_insee_number
Expand Down Expand Up @@ -421,4 +421,7 @@ def _translate(key)
end
end
end

include Faker::Deprecator
deprecate_generator('IDNumber', IdNumber)
end
6 changes: 3 additions & 3 deletions lib/faker/default/south_africa.rb
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ class << self
#
# @faker.version 1.9.2
def id_number
Faker::IDNumber.south_african_id_number
Faker::IdNumber.south_african_id_number
end

##
Expand All @@ -26,7 +26,7 @@ def id_number
#
# @faker.version 1.9.2
def valid_id_number
Faker::IDNumber.valid_south_african_id_number
Faker::IdNumber.valid_south_african_id_number
end

##
Expand All @@ -39,7 +39,7 @@ def valid_id_number
#
# @faker.version 1.9.2
def invalid_id_number
Faker::IDNumber.invalid_south_african_id_number
Faker::IdNumber.invalid_south_african_id_number
end

##
Expand Down
30 changes: 30 additions & 0 deletions lib/helpers/deprecator.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
# frozen_string_literal: true

# Based on Rails ActiveSupport Deprecator
# https://github.com/rails/rails/blob/6f0d1ad14b92b9f5906e44740fce8b4f1c7075dc/activesupport/lib/active_support/deprecation/constant_accessor.rb

# rubocop:disable Style/ClassVars
module Faker
module Deprecator
def self.included(base)
extension = Module.new do
def const_missing(missing_const_name)
if class_variable_defined?(:@@_deprecated_constants) && (replacement = class_variable_get(:@@_deprecated_constants)[missing_const_name.to_s])
$stdout.puts("DEPRECATION WARNING: #{name}::#{replacement[:old_generator]} is deprecated. Use #{replacement[:new_constant]} instead.")
return replacement[:new_constant]
end

super
end

def deprecate_generator(old_generator_name, new_generator_constant)
class_variable_set(:@@_deprecated_constants, {}) unless class_variable_defined?(:@@_deprecated_constants)
class_variable_get(:@@_deprecated_constants)[old_generator_name] = { new_constant: new_generator_constant, old_generator: old_generator_name }
end
end

base.singleton_class.prepend extension
end
end
end
# rubocop:enable Style/ClassVars
Loading

0 comments on commit 838bbf3

Please sign in to comment.