Packages
moar
0.1.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 """
Some common 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
```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
```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 and you want to return a different value and you feel the code
will be easier to read if everything is in a pipeline.
```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