| defmodule PlausibleWeb.TextHelpers do | |
| @moduledoc false | |
| @spec pretty_join([String.t()]) :: String.t() | |
| @doc """ | |
| Turns a list of strings into a string and replaces the last comma | |
| with the word "and". | |
| ### Examples: | |
| iex> ["one"] |> PlausibleWeb.TextHelpers.pretty_join() | |
| "one" | |
| iex> ["one", "two"] |> PlausibleWeb.TextHelpers.pretty_join() | |
| "one and two" | |
| iex> ["one", "two", "three"] |> PlausibleWeb.TextHelpers.pretty_join() | |
| "one, two and three" | |
| """ | |
| def pretty_join([str]), do: str | |
| def pretty_join(list) do | |
| [last_string | rest] = Enum.reverse(list) | |
| rest_string = | |
| rest | |
| |> Enum.reverse() | |
| |> Enum.join(", ") | |
| "#{rest_string} and #{last_string}" | |
| end | |
| def pretty_list(list) do | |
| list | |
| |> Enum.map(&String.replace("#{&1}", "_", " ")) | |
| |> pretty_join() | |
| end | |
| def format_date_range(date_range) do | |
| "#{format_date(date_range.first)} - #{format_date(date_range.last)}" | |
| end | |
| def format_date(date) do | |
| Calendar.strftime(date, "%b %-d, %Y") | |
| end | |
| def number_format(number) when is_integer(number) do | |
| Cldr.Number.to_string!(number) | |
| end | |
| def number_format(other), do: other | |
| end | |