FakeDecimal
If you deal with legacy Erlang code, you may know the old erlang_decimal
library. On Hex it's published as erlang_decimal, but it registers its OTP
application (and its module) under the plain name decimal — the same name the
modern Elixir decimal library uses for its own OTP application. Since a BEAM
node can't run two applications with the same name, you can't depend on both at
once.
fake_decimal solves this by providing the exact same API as the old decimal
module, implemented on top of the modern Elixir Decimal library. Depend on
fake_decimal (which pulls in the real decimal app) instead of
erlang_decimal, and your legacy code can keep calling :decimal.add/2,
:decimal.round/3, and so on without ever knowing it's talking to the new
library underneath.
Installation
Add fake_decimal to your list of dependencies in mix.exs:
def deps do
[
{:fake_decimal, "~> 0.1.1"}
]
end
Documentation is available on HexDocs.
Property-based tests compare fake_decimal against a real instance of
erlang_decimal, loaded in a separate node, to make sure the two behave
identically.
See the @moduledoc in lib/fake_decimal.ex for the full API and the handful of
intentional deviations from the original.