lib/gcode/model/expr/float.ex
defmodule Gcode.Model.Expr.Float do
defstruct f: 0.0
alias Gcode.Model.Expr.Float
use Gcode.Result
@moduledoc """
Represents a floating-point number expression in G-code.
"""
@type t :: %Float{f: float}
@doc """
Initialise a `Float` from a floating-point value.
"""
@spec init(float) :: Result.t(t)
def init(value) when is_float(value),
do: ok(%Float{f: value})
def init(value),
do: error({:expression_error, "Expected a float value, instead received #{inspect(value)}"})
end