lib/faker/en_GB/phone_number.ex

defmodule Faker.EnGB.PhoneNumber do

  use Faker.Core.Generator, only: [:numerify, :random_element]

  @formats [
    "+44(0)##########",
    "+44(0)#### ######",
    "+44(0)#########",
    "+44(0)#### #####",
    "0##########",
    "0#########",
    "0#### ######",
    "0#### #####",
    "0### ### ####",
    "0### #######",
    "(0####) ######",
    "(0####) #####",
    "(0###) ### ####",
    "(0###) #######"
  ]

  #  An array of en_GB mobile (cell) phone number formats
  @mobile_formats [
    #  Local
    "07#########",
    "07### ######",
    "07### ### ###"
  ]

  @e164_formats [
    "+44##########"
  ]

  @doc """
  Returns random phone_number

  Example: "555-123-546"
  """
  def mobile_number(:localized) do
    @mobile_formats
    |> Enum.at(0)
    |> numerify()
  end

  def mobile_number(:localized_format) do
    @mobile_formats
    |> Enum.at(1)
    |> numerify()
  end

  def mobile_number(:localized_pretify) do
    @mobile_formats
    |> Enum.at(2)
    |> numerify()
  end

  def mobile_number() do
    @formats
    |> random_element()
    |> numerify()
  end

  @doc """
  Returns random phone_number

  Example: +11134567890
  """
  def e164_phone_number() do
    @e164_formats
    |> random_element()
    |> numerify()
  end

  @doc """
    * International Mobile Equipment Identity (IMEI)
     *
     * @see http://en.wikipedia.org/wiki/International_Mobile_Station_Equipment_Identity
     * @see http://imei-number.com/imei-validation-check/
     *
     * @example "720084494799532"
     *
     * @return int imei
  """
  def imei() do
    numerify("##############")
  end
end