| Init | -+ | ::: | | | +------------+ | | ::: | | | | | | close door ::: | | | reset | start | | ::: | | | v | | ::: | | | +------------+ | | ::: | | +------ | Heating | <+-------------+ ::: | | +------------+ | ::: | | | | ::: | | | open door | ::: | | v | ::: | | +------------+ | ::: | +----------- | Waiting | <+-------------+ ::: | +------------+ | | ::: | | | | ::: | | reset | open door | ::: | v | | ::: | +------------+ | | start ::: +---------------- | Open | <+ | ::: +------------+ | ::: | | ::: +---------------------------+ [!Listing graph-easy-example]: The input DOT code of [!Figure graph-easy-example]. ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ DOT digraph G { "Init" -> "Open" [ label = "open door" ]; "Init" -> "Heating" [ label = "start" ]; "Open" -> "Init" [ label = "close door" ]; "Open" -> "Waiting" [ label = "start" ]; "Waiting" -> "Heating" [ label = "close door" ]; "Waiting" -> "Open" [ label = "reset" ]; "Heating" -> "Init" [ label = "reset" ]; "Heating" -> "Waiting" [ label = "open door" ]; } ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ [`Graph::Easy`]: https://metacpan.org/release/Graph-Easy [Graphviz DOT]: https://en.wikipedia.org/wiki/DOT_(graph_description_language) [this article]: https://codeyarns.com/2017/10/21/how-to-convert-dot-graph-to-ascii/ ]]>