Packages
croma
0.8.2
0.13.0
0.12.0
0.11.3
0.11.2
0.11.1
0.11.0
0.10.2
0.10.1
0.10.0
0.9.3
0.9.2
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.3
0.7.2
0.7.1
0.7.0
0.6.8
0.6.7
0.6.6
0.6.5
0.6.4
0.6.3
0.6.2
0.6.1
0.6.0
0.5.1
0.5.0
0.4.7
0.4.6
0.4.5
0.4.4
0.4.3
0.4.2
0.4.1
0.4.0
0.3.8
0.3.7
0.3.6
0.3.5
0.3.4
0.3.3
0.3.2
0.3.1
0.3.0
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
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
Elixir macro utilities to make type-based programming easier
Current section
Files
Jump to
Current section
Files
lib/croma/defpt.ex
defmodule Croma.Defpt do
@moduledoc """
Module that provides `Croma.Defpt.defpt/2` macro.
"""
@doc """
Defines a unit-testable private function.
When `Mix.env() == :test`, `defpt` defines a public function and thus it can be freely called from tests.
Otherwise functions defined by `defpt` become private.
Usage of this macro is exactly the same as the standard `def` and `defp` macros.
## Example
use Croma
defmodule M do
defpt f(x) do
IO.inspect(x)
end
end
"""
defmacro defpt(call, body \\ nil) do
if Mix.env() == :test do
quote do: def(unquote(call), unquote(body))
else
quote do: defp(unquote(call), unquote(body))
end
end
end