encode method
Encodes the given blueprint into a PlantUML string.
Implementation
String encode(MachineBlueprint<S, E> blueprint) {
_hasForks = false;
scanForForks(BasicBlueprint<S, E> bp) {
if (bp is ForkBlueprint) {
return _hasForks = true;
}
if (bp is CompositeBlueprint) {
for (final child in (bp as CompositeBlueprint<S, E>).children) {
scanForForks(child);
}
} else if (bp is ParallelBlueprint) {
for (final child in (bp as ParallelBlueprint<S, E>).children) {
scanForForks(child);
}
}
}
scanForForks(blueprint.root);
final buffer = StringBuffer();
buffer.writeln('@startuml');
if (blueprint.name != null) {
buffer.writeln('title ${blueprint.name}');
}
if (direction != null) {
buffer.writeln('$direction direction');
}
for (final param in skinparams) {
buffer.writeln('skinparam $param');
}
_encodeState(blueprint.root, buffer, 0);
_encodeTransitions(blueprint.root, buffer);
buffer.writeln('@enduml');
return buffer.toString();
}