lib/converter/us.ex

defmodule Exoddic.Converter.Us do
  @behaviour Exoddic.Converter
  @moduledoc """
    .us-style moneyline odds
  """

  def from_prob(amount) when amount == 0.00, do: 0.0
  def from_prob(amount) when amount <= 0.50, do: 100 * ((1 - amount) / amount)
  def from_prob(amount) when amount > 0.50, do: -100 * (amount / (1 - amount))

  def to_prob(amount) when amount == 0, do: 0.0
  def to_prob(amount) when amount < 0, do: amount / (amount - 100)
  def to_prob(amount) when amount > 0, do: 100 / (amount + 100)

  @doc "Nearest integer; includes prepended '+' for non-negative"
  def for_display(amount) when amount < 0, do: "#{round(amount)}"
  def for_display(amount) when amount >= 0, do: "+#{round(amount)}"
end