Packages
vtc
0.16.9
0.17.5
0.17.4
0.17.3
0.17.2
0.17.1
0.17.0
0.16.9
0.16.8
0.16.7
0.16.6
0.16.5
0.16.4
0.16.2
0.16.1
0.16.0
0.15.4
0.15.3
0.15.2
0.15.1
0.15.0
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.15
0.13.14
0.13.13
0.13.12
0.13.11
0.13.10
0.13.9
0.13.8
0.13.7
0.13.6
0.13.5
0.13.4
0.13.3
0.13.2
0.13.1
0.13.0
0.12.1
0.12.0
0.11.1
0.11.0
0.10.10
0.10.9
0.10.8
0.10.7
0.10.6
0.10.5
0.10.4
0.10.3
0.10.2
0.10.1
0.10.0
0.9.2
0.9.1
0.9.0
0.8.4
0.8.3
0.8.2
0.8.1
0.8.0
0.7.3
0.7.2
0.7.1
0.7.0
0.6.1
0.6.0
0.5.3
0.5.2
0.5.1
0.4.0
0.3.9
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.6
0.2.5
0.2.4
0.2.3
0.2.2
0.2.1
0.2.0
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
A SMPTE timecode library for Elixir
Current section
Files
Jump to
Current section
Files
lib/errors/framestamp_mixed_rate_arithmetic_error.ex
defmodule Vtc.Framestamp.MixedRateArithmeticError do
@moduledoc """
Exception returned when mixed-rate arithmetic was attempted without specifying which
side of the operation's rate should be inherited.
## Struct Fields
- `left_rate`: The rate that was found on the left side of the operation.
- `right_rate`: The rate that was found on the right side of the operation.
"""
alias Vtc.Framerate
@enforce_keys [:func_name, :left_rate, :right_rate]
defexception @enforce_keys
@typedoc """
Type of `Framestamp.MixedRateError`.
"""
@type t() :: %__MODULE__{
func_name: :add | :sub,
left_rate: Framerate.t(),
right_rate: Framerate.t()
}
@doc """
Returns a message for the error reason.
"""
@spec message(t()) :: String.t()
def message(error) do
"attempted `Framestamp.#{error.func_name}(a, b)` where `a.rate` does not match" <>
" `b.rate`. try `:inherit_rate` option to `:left` or `:right`." <>
" alternatively, do your calculation in seconds, then cast back to `Framestamp`" <>
" with the appropriate framerate using `with_seconds/3`"
end
end