Files
friends/friends/lib/helpers/names.ex
T

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