defmodule Faker.Util.En do @moduledoc false import Faker.Util, only: [pick: 1] @digit ~w/0 1 2 3 4 5 6 7 8 9/ @lowercase_alphabet ~w/a b c d e f g h i j k l m n o p q r s t u v w x y z/ @uppercase_alphabet ~w/A B C D E F G H I J K L M N O P Q R S T U V W X Y Z/ @alphabet @lowercase_alphabet ++ @uppercase_alphabet @doc """ Get a random digit as a string; one of 0-9 """ @spec digit() :: binary def digit do pick @digit end @doc """ Get a random alphabet character as a string; one of a-z or A-Z """ @spec letter() :: binary def letter do pick @alphabet end @doc """ Get a random lowercase character as a string; one of a-z """ @spec lower_letter() :: binary def lower_letter do pick @lowercase_alphabet end @doc """ Get a random uppercase character as a string; one of A-Z """ @spec upper_letter() :: binary def upper_letter do pick @uppercase_alphabet end @doc """ Converts a list to a string, with "and" before the last item. Uses an Oxford comma. """ @spec to_sentence([binary]) :: binary def to_sentence([]), do: "" def to_sentence([single]), do: single def to_sentence([first, second]), do: "#{first} and #{second}" def to_sentence([first | rest]), do: Enum.join(rest, ", ") <> ", and #{first}" end