Skip to content

Commit 730f1a2

Browse files
eFranelyrixx
authored andcommitted
[Workflow] Add Mermaid.js dumper
1 parent a21ac4c commit 730f1a2

File tree

1 file changed

+16
-8
lines changed

1 file changed

+16
-8
lines changed

Command/WorkflowDumpCommand.php

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@
1818
use Symfony\Component\Console\Input\InputOption;
1919
use Symfony\Component\Console\Output\OutputInterface;
2020
use Symfony\Component\Workflow\Dumper\GraphvizDumper;
21+
use Symfony\Component\Workflow\Dumper\MermaidDumper;
2122
use Symfony\Component\Workflow\Dumper\PlantUmlDumper;
2223
use Symfony\Component\Workflow\Dumper\StateMachineGraphvizDumper;
2324
use Symfony\Component\Workflow\Marking;
@@ -51,7 +52,7 @@ protected function configure()
5152
5253
<info>DOT</info>: %command.full_name% <workflow name> | dot -Tpng > workflow.png
5354
<info>PUML</info>: %command.full_name% <workflow name> --dump-format=puml | java -jar plantuml.jar -p > workflow.png
54-
55+
<info>MERMAID</info>: %command.full_name% <workflow name> --dump-format=mermaid | mmdc -o workflow.svg
5556
EOF
5657
)
5758
;
@@ -75,13 +76,20 @@ protected function execute(InputInterface $input, OutputInterface $output): int
7576
throw new InvalidArgumentException(sprintf('No service found for "workflow.%1$s" nor "state_machine.%1$s".', $serviceId));
7677
}
7778

78-
if ('puml' === $input->getOption('dump-format')) {
79-
$transitionType = 'workflow' === $type ? PlantUmlDumper::WORKFLOW_TRANSITION : PlantUmlDumper::STATEMACHINE_TRANSITION;
80-
$dumper = new PlantUmlDumper($transitionType);
81-
} elseif ('workflow' === $type) {
82-
$dumper = new GraphvizDumper();
83-
} else {
84-
$dumper = new StateMachineGraphvizDumper();
79+
switch ($input->getOption('dump-format')) {
80+
case 'puml':
81+
$transitionType = 'workflow' === $type ? PlantUmlDumper::WORKFLOW_TRANSITION : PlantUmlDumper::STATEMACHINE_TRANSITION;
82+
$dumper = new PlantUmlDumper($transitionType);
83+
break;
84+
85+
case 'mermaid':
86+
$transitionType = 'workflow' === $type ? MermaidDumper::TRANSITION_TYPE_WORKFLOW : MermaidDumper::TRANSITION_TYPE_STATEMACHINE;
87+
$dumper = new MermaidDumper($transitionType);
88+
break;
89+
90+
case 'dot':
91+
default:
92+
$dumper = ('workflow' === $type) ? new GraphvizDumper() : new StateMachineGraphvizDumper();
8593
}
8694

8795
$marking = new Marking();

0 commit comments

Comments
 (0)