1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
|
# frozen_string_literal: true
module FFaker
# Sources:
# - https://en.wikipedia.org/wiki/Telephone_numbers_in_Brazil
# - http://www.teleco.com.br/num_cel.asp
# - http://ddd.online24hs.com.br/
# - https://tecnoblog.net/24850/prefixo-10-para-grande-sao-paulo-deve-comecar-a-funcionar-em-outubro/
# - http://agenciabrasil.ebc.com.br/geral/noticia/2016-10/numeros-de-celulares-de-todo-o-pais-terao-nove-digitos-partir-do-dia-6
#
module PhoneNumberBR
extend ModuleUtils
extend self
COUNTRY_PREFIX = '+55'
AREA_CODE = [
11..19, 21..22, 24, 27..28, 31..35, 37..38, 41..49,
51, 53..55, 61..69, 71, 73..75, 77, 79, 81..89, 91..99
].flat_map { |x| Array(x) }.map(&:to_s).freeze
HOME_WORK_PHONE_PREFIX = %w[2 3 4 5].freeze
MOBILE_PHONE_PREFIX = %w[96 97 98 99].freeze
PHONE_NUMBER = %w[####### ###-####].freeze
# generate a random phone number
#
def phone_number
rand(0..1).zero? ? home_work_phone_number : mobile_phone_number
end
def home_work_phone_number
number HOME_WORK_PHONE_PREFIX
end
def mobile_phone_number
number MOBILE_PHONE_PREFIX
end
# pick a random phone number with the international prefix code
#
def international_phone_number
rand(0..1).zero? ? international_mobile_phone_number : international_home_work_phone_number
end
def international_mobile_phone_number
number MOBILE_PHONE_PREFIX, COUNTRY_PREFIX
end
def international_home_work_phone_number
number HOME_WORK_PHONE_PREFIX, COUNTRY_PREFIX
end
def country_code
COUNTRY_PREFIX
end
private
def number(prefixes, country_prefix = '')
space = random_space
p = [
country_prefix,
space,
fetch_sample(AREA_CODE),
space,
fetch_sample(prefixes),
fetch_sample(PHONE_NUMBER)
].join('').strip
FFaker.numerify p
end
def random_space
rand(0..1) == 1 ? ' ' : ''
end
end
end
|