lib/exfake.ex

defmodule Exfake do
  @moduledoc """
  Documentation for `Exfake`.
  """

  alias Datasets.{Names, Phones}

  @doc """
  Generates first name.
  """
  @spec first_name :: String.t()
  def first_name do
    Enum.random(Names.first_names())
  end

  @doc """
  Generates last name.
  """
  @spec last_name :: String.t()
  def last_name do
    Enum.random(Names.last_names())
  end

  @doc """
  Generates first name + last name combination.
  """
  @spec person :: String.t()
  def person do
    "#{first_name()} #{last_name()}"
  end

  @doc """
  Generates phone number which formatted randomly.
  """
  @spec phone_number :: String.t()
  def phone_number do
    Phones.formats()
    |> Enum.random()
    |> String.replace("#", fn _ -> Integer.to_string(Enum.random(0..9)) end)
  end
end