Current section
Files
Jump to
Current section
Files
lib/sutra/common.ex
defmodule Sutra.Common do
@moduledoc """
Common used types
"""
@type ratio() :: {integer(), pos_integer()}
@type ex_price() :: ratio()
use TypedStruct
typedstruct(module: RationalNumber) do
field(:numerator, :integer, required: true)
field(:denominator, :integer, required: true)
end
typedstruct(module: ExecutionUnitPrice) do
field(:mem_price, Sutra.Common.ex_price())
field(:step_price, Sutra.Common.ex_price())
end
typedstruct(module: ExecutionUnits) do
field(:mem, pos_integer())
field(:step, pos_integer())
end
def rational_from_binary(str) when is_binary(str) do
case String.split(str, "/") do
[n, d] ->
%RationalNumber{numerator: String.to_integer(n), denominator: String.to_integer(d)}
_ ->
nil
end
end
end