Current section
Files
Jump to
Current section
Files
lib/human_name.ex
defmodule HumanName do
@moduledoc """
Documentation for HumanName.
"""
@doc """
Returns the initial for the first (given) name.
## Example
iex> HumanName.first_initial("Jimmy H Jenkins")
{:ok, "J"}
iex> HumanName.first_initial("Dr. Alibaster Cornelius Juniper III")
{:ok, "A"}
iex> HumanName.first_initial(12345)
{:error, "No valid name found"}
iex> HumanName.first_initial("")
{:error, "No valid name found"}
iex> HumanName.first_initial(nil)
{:error, "No valid name found"}
"""
def first_initial(full_name) when is_binary(full_name) and full_name != "",
do: HumanName.Native.first_initial(full_name)
def first_initial(_), do: name_not_provided()
@doc """
Returns the initial for the first (given) name and the full last name (surname).
## Example
iex> HumanName.first_initial_last("Jimmy H Jenkins")
{:ok, "J. Jenkins"}
iex> HumanName.first_initial_last("Dr. Alibaster Cornelius Juniper III")
{:ok, "A. Juniper"}
iex> HumanName.first_initial_last("")
{:error, "No valid name found"}
"""
def first_initial_last(full_name) when is_binary(full_name) and full_name != "",
do: HumanName.Native.first_initial_last(full_name)
def first_initial_last(_), do: name_not_provided()
@doc """
Returns just the formatted first (given) name.
## Example
iex> HumanName.first_name("Jimmy H Jenkins")
{:ok, "Jimmy"}
iex> HumanName.first_name("Dr. Alibaster Cornelius Juniper III")
{:ok, "Alibaster"}
iex> HumanName.first_name("")
{:error, "No valid name found"}
"""
def first_name(full_name) when is_binary(full_name) and full_name != "",
do: HumanName.Native.first_name(full_name)
def first_name(_), do: name_not_provided()
@doc """
Returns the combined initials for the first (given) name and last (surname) name.
## Example
iex> HumanName.initials("Jimmy H Jenkins")
{:ok, "JJ"}
iex> HumanName.initials("Dr. Alibaster Cornelius Juniper III")
{:ok, "AJ"}
iex> HumanName.initials("")
{:error, "No valid name found"}
"""
def initials(full_name) when is_binary(full_name) and full_name != "",
do: HumanName.Native.initials(full_name)
def initials(_), do: name_not_provided()
@doc """
Returns just the formatted last name (surname).
## Example
iex> HumanName.last_name("Jimmy H Jenkins")
{:ok, "Jenkins"}
iex> HumanName.last_name("Dr. Alibaster Cornelius Juniper III")
{:ok, "Juniper"}
iex> HumanName.last_name("")
{:error, "No valid name found"}
"""
def last_name(full_name) when is_binary(full_name) and full_name != "",
do: HumanName.Native.last_name(full_name)
def last_name(_), do: name_not_provided()
@doc """
Returns a formatted version of just the first (given) and last (surname) names.
## Example
iex> HumanName.normalize("Jimmy H Jenkins")
{:ok, "Jimmy Jenkins"}
iex> HumanName.normalize("Dr. Alibaster Cornelius Juniper III")
{:ok, "Alibaster Juniper"}
iex> HumanName.normalize("fred mccalister ")
{:ok, "Fred McCalister"}
iex> HumanName.normalize("")
{:error, "No valid name found"}
"""
def normalize(full_name) when is_binary(full_name) and full_name != "",
do: HumanName.Native.normalize(full_name)
def normalize(_), do: name_not_provided()
@doc """
Returns a formatted version of the entire name.
## Example
iex> HumanName.normalize_full("JIMMY H JENKINS")
{:ok, "Jimmy H. Jenkins"}
iex> HumanName.normalize_full("Dr. Alibaster Cornelius Juniper III")
{:ok, "Alibaster Cornelius Juniper, III"}
iex> HumanName.normalize_full("")
{:error, "No valid name found"}
"""
def normalize_full(full_name) when is_binary(full_name) and full_name != "",
do: HumanName.Native.normalize_full(full_name)
def normalize_full(_), do: name_not_provided()
defp name_not_provided(), do: {:error, "No valid name found"}
end