Current section
Files
Jump to
Current section
Files
lib/log/level/name.ex
defmodule Log.Level.Name do
@moduledoc """
Provides functions to parse level strings
"""
alias Log.Level
@spec parse(level :: String.t()) :: {:ok, Level.t()} | {:error, String.t()}
def parse(level)
def parse("_min"), do: {:ok, Level.min()}
def parse("_max"), do: {:ok, Level.max()}
for {name, lv} <- Enum.map(Level.all(), fn lv -> {to_string(lv), lv} end) do
def parse(unquote(name)), do: {:ok, unquote(lv)}
end
def parse(level), do: {:error, "Level #{inspect(level)} doesn't exist"}
@spec parse!(level :: String.t()) :: Level.t() | no_return()
def parse!(level) do
case parse(level) do
{:error, msg} -> raise ArgumentError, msg
{:ok, result} -> result
end
end
end