lib/ffaker/phone_number_fr.rb
# frozen_string_literal: true module FFaker # Source: https://en.wikipedia.org/wiki/Telephone_numbers_in_France module PhoneNumberFR extend ModuleUtils extend self COUNTRY_CODE = '33' AREA_PREFIX = %w[01 02 03 04 05].freeze NON_AREA_PREFIX = %w[09].freeze HOME_WORK_PHONE_PREFIX = AREA_PREFIX + NON_AREA_PREFIX MOBILE_PHONE_PREFIX = %w[06 07].freeze PHONE_PREFIX = HOME_WORK_PHONE_PREFIX + MOBILE_PHONE_PREFIX PHONE_NUMBER = ['########', ' ## ## ## ##'].freeze def home_work_phone_number number HOME_WORK_PHONE_PREFIX end def mobile_phone_number number MOBILE_PHONE_PREFIX end # generates mobile or home/work number def phone_number rand(0..1).zero? ? home_work_phone_number : mobile_phone_number end def country_code "#{fetch_sample(['+', '00'])}#{COUNTRY_CODE}" end def international_mobile_phone_number number MOBILE_PHONE_PREFIX, country_code end def international_home_work_phone_number number HOME_WORK_PHONE_PREFIX, country_code end def international_phone_number rand(0..1).zero? ? international_mobile_phone_number : international_home_work_phone_number end private def number(prefixes, country_prefix = '') space = random_space prefix = fetch_sample(prefixes) prefix = prefix[1] unless country_prefix == '' FFaker.numerify [ country_prefix, space, prefix, fetch_sample(PHONE_NUMBER) ].join.strip end def random_space rand(0..1).zero? ? '' : ' ' end end end