35 lines
757 B
Elixir
35 lines
757 B
Elixir
defmodule Helpers.Names do
|
|
def full_name(friend) do
|
|
friend.name
|
|
|> String.reverse()
|
|
|> String.split(" ", parts: 2)
|
|
|> Enum.map(&String.reverse/1)
|
|
|> Enum.reverse()
|
|
|
|
# This is all so that "First Middle Last" becomes ["First Middle", "Last"]
|
|
# Is there a more elegant solution? DEFINITELY.
|
|
end
|
|
|
|
def first_name(friend) do
|
|
friend
|
|
|> first_and_middle_name()
|
|
|> String.split()
|
|
|> List.first()
|
|
end
|
|
|
|
def first_and_middle_name(friend) do
|
|
friend
|
|
|> full_name
|
|
|> List.first()
|
|
end
|
|
|
|
def middle_name(friend) do
|
|
[_first | middles] = friend |> first_and_middle_name() |> String.split()
|
|
middles |> Enum.join(" ")
|
|
end
|
|
|
|
def last_name(friend) do
|
|
friend |> full_name |> List.last()
|
|
end
|
|
end
|