lib/ffaker/phone_number_ja.rb
# frozen_string_literal: true
# sourse: https://www.soumu.go.jp/main_sosiki/joho_tsusin/top/tel_number/number_shitei.html#kotei-denwa
module FFaker
module PhoneNumberJA
extend ModuleUtils
extend self
JAPAN_PREFIX = '0'
JAPAN_COUNTRY_CODE = '+81'
ONE_DISIT_FORMAT = '%s #### ####'
TWO_DISIT_FORMAT = '%s ### ####'
THREE_DISIT_FORMAT = '%s ## ####'
FOUR_DISIT_FORMAT = '%s # ####'
MOBILE_PHONE_PREFIXES = %w[90 80 70].freeze
IP_PHONE_PREFIX = '50'
MOBILE_NUMBER_FORMAT = '%s #### ####'
def home_phone_number
disit = rand(1..4)
FFaker.numerify("#{JAPAN_PREFIX}#{home_phone_number_format(disit)}")
end
def mobile_phone_number
FFaker.numerify("#{JAPAN_PREFIX}#{mobile_phone_number_format}")
end
def phone_number
case rand(0..1)
when 0 then home_phone_number
when 1 then mobile_phone_number
end
end
def international_home_phone_number
disit = rand(1..4)
FFaker.numerify("#{JAPAN_COUNTRY_CODE} #{home_phone_number_format(disit)}")
end
def international_mobile_phone_number
FFaker.numerify("#{JAPAN_COUNTRY_CODE} #{mobile_phone_number_format}")
end
def international_phone_number
case rand(0..1)
when 0 then international_mobile_phone_number
when 1 then international_home_phone_number
end
end
def home_phone_prefix(disit = nil)
case disit
when 1 then fetch_sample(ONE_DISIT_AREA_CODES)
when 2 then fetch_sample(TWO_DISIT_AREA_CODES)
when 3 then fetch_sample(THREE_DISIT_AREA_CODES)
when 4 then fetch_sample(FOUR_DISIT_AREA_CODES)
end
end
def home_phone_number_format(disit)
prefix = home_phone_prefix(disit)
select_home_phone_format(disit) % prefix
end
def mobile_prefix
fetch_sample(MOBILE_PHONE_PREFIXES)
end
def mobile_phone_number_format
prefix = mobile_prefix
MOBILE_NUMBER_FORMAT % prefix
end
private
def select_home_phone_format(disit)
case disit
when 1 then ONE_DISIT_FORMAT
when 2 then TWO_DISIT_FORMAT
when 3 then THREE_DISIT_FORMAT
when 4 then FOUR_DISIT_FORMAT
end
end
end
end