Current section
Files
Jump to
Current section
Files
dev/test/fixtures/input/case_arms.ex
defmodule Example.CaseArms do
def classify(result) do
case result do
{:ok, value} -> value
{:error, reason} -> {:error, reason}
_ -> nil
end
end
def classify_tuple({a, b}) do
case {a, b} do
{nil, nil} ->
:both_nil
{x, nil} when is_integer(x) ->
{:left, x}
{nil, y} ->
{:right, y}
{x, y} ->
{x, y}
end
end
def pipe_case(list) do
list
|> Enum.filter(&is_integer/1)
|> case do
[] -> :empty
int_list -> int_list
end
end
def more_complex_case(text, components) do
components
|> Enum.reduce_while(%{}, fn component, acc ->
component_text = maybe_preprocess(text, component.__preprocess__())
case component.__fields__()
|> Enum.map(fn {name, field} ->
{name, Field.extract(field, component_text)}
end)
|> Enum.reject(fn {_k, v} -> is_nil(v) end)
|> Enum.into(%{})
|> maybe_postprocess(component) do
{:error, _} = err -> {:halt, err}
fields -> {:cont, Map.merge(acc, fields)}
end
end)
end
end