Packages
finitomata
0.19.0
0.41.0
0.40.0
0.35.0
0.34.0
0.33.0
0.32.0
0.31.1
0.30.3
0.30.2
0.30.1
0.30.0
0.29.10
0.29.9
0.29.8
0.29.7
0.29.6
0.29.5
0.29.4
0.29.3
0.29.2
0.29.1
0.29.0
0.28.1
0.28.0
0.27.1
0.27.0
0.26.4
0.26.3
0.26.2
0.26.1
0.26.0
0.25.0
0.24.4
0.24.3
0.24.2
0.24.1
0.24.0
0.23.7
0.23.6
0.23.5
0.23.4
0.23.3
0.23.2
0.23.1
0.23.0
0.22.1
0.22.0
0.21.4
0.21.3
0.21.2
0.21.1
0.21.0
0.20.2
0.20.1
0.20.0
0.19.6
0.19.5
0.19.4
0.19.3
0.19.2
0.19.1
0.19.0
0.18.4
0.18.3
0.18.2
0.18.1
0.18.0
0.17.1
0.17.0
0.16.0
0.15.1
0.15.0
0.14.6
0.14.5
0.14.4
0.14.3
0.14.2
0.14.1
0.14.0
0.13.0
0.12.1
0.12.0
0.11.3
0.11.2
0.11.1
0.11.0
0.10.0
0.9.1
0.9.0
0.8.2
0.8.1
0.8.0
0.7.2
0.7.1
0.7.0
0.6.3
0.6.2
0.6.1
0.6.0
0.5.2
0.5.1
0.5.0
0.4.0
0.3.0
0.2.0
0.1.1
0.1.0
The FSM implementation generated from PlantUML textual representation.
Current section
Files
Jump to
Current section
Files
lib/finitomata/errors.ex
defmodule Finitomata.TestTransitionError do
defexception path: nil, transition: [], missing_states: [], unknown_states: [], message: nil
@impl true
def message(%{message: nil} = exception) do
[
"The transition validation must include all possible continuations.",
if(not Enum.empty?(exception.transition),
do: " Transition: " <> inspect(exception.transition) <> "."
),
if(not Enum.empty?(exception.missing_states),
do: " Missing states: " <> inspect(exception.missing_states) <> "."
),
if(not Enum.empty?(exception.unknown_states),
do: " Unknown states: " <> inspect(exception.unknown_states) <> "."
)
]
|> Enum.reject(&is_nil/1)
|> Enum.join("\n")
end
def message(%{message: message}) do
message
end
@impl true
def blame(exception, stacktrace) do
message = message(exception) <> hint()
{%{exception | message: message}, stacktrace}
end
defp hint do
[
:yellow,
"\n đŸ’¡ If you do not want to validate anything after entering some states, use " <>
"`:state -> :ok` clause.\n"
]
|> IO.ANSI.format()
|> to_string()
end
end