Sha256: 3f80cd82282b4ff260a44d2ce04d6e457c984f935ebc10c70f0e71bd9556bd0b

Contents?: true

Size: 1.93 KB

Versions: 1

Compression:

Stored size: 1.93 KB

Contents

# encoding: utf-8

module FFaker
  module PhoneNumber
    extend ModuleUtils
    extend self

    def phone_number
      FFaker.numerify case rand(20)
      when      0 then "#{area_code}-###-#### x#####"
      when      1 then "#{area_code}-###-#### x####"
      when      2 then "#{area_code}-###-#### x###"
      when   3..4 then "#{area_code}-###-####"
      when      5 then "#{area_code}.###.#### x#####"
      when      6 then "#{area_code}.###.#### x####"
      when      7 then "#{area_code}.###.#### x###"
      when   8..9 then "#{area_code}.###.####"
      when     10 then "(#{area_code})###-#### x#####"
      when     11 then "(#{area_code})###-#### x####"
      when     12 then "(#{area_code})###-#### x###"
      when 13..14 then "(#{area_code})###-####"
      when     15 then "1-#{area_code}-###-#### x#####"
      when     16 then "1-#{area_code}-###-#### x####"
      when     17 then "1-#{area_code}-###-#### x###"
      when 18..19 then "1-#{area_code}-###-####"
      end
    end

    def area_code
      # The North American Numbering Plan (NANP) does not permit the digits 0
      # and 1 as the leading digit of an area code.
      # https://en.wikipedia.org/wiki/List_of_North_American_Numbering_Plan_area_codes
      rand(201..999)
    end

    def short_phone_number
      FFaker.numerify("#{area_code}-###-####")
    end

    def imei(serial_number=nil)
      # IMEI Format:
      # AA-BBBBBB-CCCCCC-D

      rbi = "00"            # Test IMEI for countries with 2-digit country codes
      tac = "#{rbi}124500"  # iPhone

      serial_number ||= rand(1_000_000)
      serial_number = sprintf('%06d', serial_number)

      imei_base = tac + serial_number

      check_digit = 0
      base_digits = imei_base.split('').map(&:to_i)
      base_digits.each_with_index do |digit, i|
        check_digit += i.even? ? 2*digit : digit
      end
      check_digit = (10 - check_digit % 10) % 10

      "#{imei_base}#{check_digit}"
    end

  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
ffaker-2.1.0 lib/ffaker/phone_number.rb