# ┌──────────────────────────────────────────────────────────────┐ # │ Based on the course "Elixir for Programmers" by Dave Thomas. │ # └──────────────────────────────────────────────────────────────┘ defmodule Hangman.Dictionary do @moduledoc """ Dictionary for the _Hangman Game_. Returns a random word in lowercase. ##### Based on the course [Elixir for Programmers](https://codestool.coding-gnome.com/courses/elixir-for-programmers) by Dave Thomas. """ alias __MODULE__.WordsAgent @doc """ Returns a random word in lowercase. ## Examples iex> alias Hangman.Dictionary iex> [ ...> Dictionary.random_word(), ...> Dictionary.random_word(), ...> Dictionary.random_word(), ...> Dictionary.random_word(), ...> "résumé", ...> "jalapeño", ...> "noël", ...> "tête", ...> "façade" ...> ] ...> |> Enum.all?(& &1 =~ ~r/^[[:lower:]]+$/u) true iex> alias Hangman.Dictionary.WordsAgent iex> words = Agent.get(WordsAgent, & &1) iex> {length(words), is_list(words)} {8881, true} """ @spec random_word :: String.t() def random_word, do: Agent.get(WordsAgent, &Enum.random/1) end