Current section

Files

Jump to
idiom lib idiom extract.ex
Raw

lib/idiom/extract.ex

defmodule Idiom.Extract do
@moduledoc false
use Agent
def start_link do
Agent.start_link(fn -> [] end, name: __MODULE__)
end
def keys do
Agent.get(__MODULE__, & &1)
end
def add_key(key) do
Agent.update(__MODULE__, &Enum.uniq([key | &1]))
end
def expand_to_binary(term, env) do
case Macro.expand(term, env) do
term when is_binary(term) ->
term
{:<<>>, _, parts} ->
if Enum.all?(parts, &is_binary/1), do: Enum.join(parts)
_other ->
nil
end
end
end