Packages
moar
1.31.0
5.0.0
4.3.0
4.2.0
4.1.0
4.0.0
3.2.0
3.1.0
3.0.0
2.7.0
2.6.0
2.5.0
2.4.2
2.4.1
2.4.0
2.3.0
2.2.0
2.1.0
2.0.1
2.0.0
1.64.0
1.63.1
1.63.0
1.62.0
1.61.2
1.61.1
1.61.0
1.60.0
1.59.2
1.59.1
1.59.0
1.58.0
1.57.0
1.56.2
1.56.1
1.56.0
1.55.0
1.54.0
1.53.0
1.52.1
1.52.0
1.51.0
1.50.0
1.49.0
1.48.0
1.47.0
1.46.0
1.45.1
1.45.0
1.44.0
1.43.0
1.42.0
1.41.0
1.40.0
1.39.0
1.38.0
1.37.0
1.36.0
1.35.0
1.34.0
1.33.0
1.32.0
1.31.0
1.30.0
1.29.0
1.28.0
1.27.0
1.26.0
1.25.0
1.24.1
1.24.0
1.23.0
1.22.0
1.21.0
1.20.0
1.19.3
1.19.2
1.19.1
1.19.0
1.18.1
1.18.0
1.17.0
1.16.0
1.15.0
1.14.0
1.13.1
1.13.0
1.12.0
1.11.0
1.10.0
1.9.0
1.8.0
1.7.0
1.6.0
1.5.0
1.4.0
1.3.0
1.2.0
1.1.0
1.0.0
0.1.0
A dependency-free utility library containing 100+ useful functions.
Current section
Files
Jump to
Current section
Files
lib/sugar.ex
defmodule Moar.Sugar do
# @related [test](/test/sugar_test.exs)
@moduledoc """
Syntactic sugar functions.
These functions are intended to be used by importing the functions or the whole module:
```
import Moar.Sugar, only: [noreply: 1]
def handle_event("foo", _params, socket) do
socket |> assign(foo: "bar") |> noreply()
end
```
"""
@doc """
Wraps a term in an :error tuple. Useful in pipelines.
```elixir
iex> %{} |> Map.put(:count, "unknown") |> Moar.Sugar.error()
{:error, %{count: "unknown"}}
```
"""
@spec error(term()) :: {:error, term()}
def error(term), do: {:error, term}
@doc """
Unwraps an :error tuple, raising if the term is not an :error tuple.
```elixir
iex> {:error, 1} |> Moar.Sugar.error!()
1
```
"""
@spec error!({:error, term()}) :: term()
def error!({:error, term}), do: term
@doc """
Wraps a term in a :noreply tuple. Useful in pipelines.
```elixir
iex> %{} |> Map.put(:count, 0) |> Moar.Sugar.noreply()
{:noreply, %{count: 0}}
```
"""
@spec noreply(term()) :: {:noreply, term()}
def noreply(term), do: {:noreply, term}
@doc """
Wraps a term in an :ok tuple. Useful in pipelines.
```elixir
iex> %{} |> Map.put(:count, 10) |> Moar.Sugar.ok()
{:ok, %{count: 10}}
```
"""
@spec ok(term()) :: {:ok, term()}
def ok(term), do: {:ok, term}
@doc """
Unwraps an :ok tuple, raising if the term is not an :ok tuple.
```elixir
iex> {:ok, 1} |> Moar.Sugar.ok!()
1
```
"""
@spec ok!({:ok, term()}) :: term()
def ok!({:ok, term}), do: term
@doc """
Accepts two arguments and returns the second.
Useful at the end of the pipeline when you want to return a different value than the last result of the pipeline,
such as when the pipeline has side effects.
```elixir
iex> %{} |> Map.put(:count, 20) |> Moar.Sugar.returning(:count_updated)
:count_updated
```
"""
@spec returning(any(), any()) :: any()
def returning(_first, second), do: second
end