DecimalEnv

Build statusHex pmhex.pm downloads

Environment (noun): The totality of the natural world, often excluding humans.

This library provides a macro to encapsulate Decimal operations while using Elixir operators e.g:

iex(1)> import DecimalEnv
iex(2)> decimal do
...(2)>   21.0 + "21.0"
...(2)> end
#Decimal<42.0>

For more information on Decimal library, you can go to its documentation.

There are two options we can provide to control the operations happening inside the decimal block:

The following would be a more complex example for the macro:

iex(1)> import DecimalEnv
iex(2)> decimal context: [precision: 2, rounding: :ceiling], as: :integer do
...(2)>   21.1 + 20
...(2)> end
42

The macro overloads all Elixir numeric operators and that's why the block can contain any valid Elixir code e.g. the following snippet calculates the mean of the numbers 1, 2, 3 and 4 which is 2.5:

iex(1)> import DecimalEnv
iex(2)> decimal as: :float do
...(2)>   values = [1,2,3,4]
...(2)>   amount = length(values)
...(2)>
...(2)>   Enum.reduce(values, 0, &(&1 + &2)) / amount
...(2)> end
2.5

Installation

Add it to your mix.exs

def deps do
  [{:decimal_env, "~> 1.0"}]
end

Author

Alexander de Sousa.

License

DecimalEnv is released under the MIT License. See the LICENSE file for further details.