Current section
Files
Jump to
Current section
Files
lib/phone_generator.ex
defmodule PhoneGenerator do
@moduledoc """
Generates valid Spanish phone number of different types:
mobile, landline, premium, or toll free.
PhoneValidator.find_province(1) can also be called on the generated landlines.
"""
@doc """
## Available arguments for generate/1
- generate(:mobile)
- generate(:landline)
- generate(:premium)
- generate(:toll_free)
"""
@spec generate(atom) :: String.t
def generate(:landline) do
require AreaCode
area_code = AreaCode.codes_by_province
|> Map.values
|> List.flatten
|> Enum.random
Enum.join([area_code, extension(6)])
end
def generate(:mobile) do
join_number([6,7], 8)
end
def generate(:toll_free) do
join_number([900, 800], 6)
end
def generate(:premium) do
join_number([902, 802], 6)
end
defp extension(length) do
Enum.map(1..length, fn _i -> :rand.uniform(9) end) |> Enum.join()
end
defp join_number(prefix_list, length) do
prefix = Enum.random(prefix_list)
Enum.join [prefix, extension(length)]
end
end