UmlDotGraph does not escape special characters like " and \ in state,
trigger, description labels. As a result, the generated DOT is invalid when
such labels exist.
This is not a big deal perhaps when labels are carefully selected in order to
work around this issue. But state machines may be dynamically created from
data/strings not originally designed with Stateless and this issue in mind.
This PR includes:
new method UmlDotGraphStyle.EscapeLabel
UmlDotGraphStyle uses this method when required
added the new test SimpleTransitionWithEscaping, similar to SimpleTransition but using problematic labels
removed the test SimpleTransitionUML because it seems to be completely identical to SimpleTransition
reworked the existing test SpacedUmlWithSubstate so that it uses problematic states, triggers, descriptions
P.S. I hit this issue with real use cases on making state machines in PowerShell for using with FarNet.Stateless.
UmlDotGraph
does not escape special characters like"
and\
in state, trigger, description labels. As a result, the generated DOT is invalid when such labels exist.This is not a big deal perhaps when labels are carefully selected in order to work around this issue. But state machines may be dynamically created from data/strings not originally designed with
Stateless
and this issue in mind.This PR includes:
UmlDotGraphStyle.EscapeLabel
UmlDotGraphStyle
uses this method when requiredSimpleTransitionWithEscaping
, similar toSimpleTransition
but using problematic labelsSimpleTransitionUML
because it seems to be completely identical toSimpleTransition
SpacedUmlWithSubstate
so that it uses problematic states, triggers, descriptionsP.S. I hit this issue with real use cases on making state machines in PowerShell for using with FarNet.Stateless.