From f7648e85d900b461afe770db725b4bc67ac92c87 Mon Sep 17 00:00:00 2001 From: yari-dewalt Date: Wed, 22 Jan 2025 09:00:48 -0800 Subject: [PATCH] Add support for direction statement --- .../requirement/parser/requirementDiagram.jison | 16 ++++++++++++++++ .../src/diagrams/requirement/requirementDb.ts | 10 +++++++++- 2 files changed, 25 insertions(+), 1 deletion(-) diff --git a/packages/mermaid/src/diagrams/requirement/parser/requirementDiagram.jison b/packages/mermaid/src/diagrams/requirement/parser/requirementDiagram.jison index 6d0f7b122..0001f4165 100644 --- a/packages/mermaid/src/diagrams/requirement/parser/requirementDiagram.jison +++ b/packages/mermaid/src/diagrams/requirement/parser/requirementDiagram.jison @@ -22,6 +22,10 @@ accDescr\s*":"\s* { this.begin("ac accDescr\s*"{"\s* { this.begin("acc_descr_multiline");} [\}] { this.popState(); } [^\}]* return "acc_descr_multiline_value"; +.*direction\s+TB[^\n]* return 'direction_tb'; +.*direction\s+BT[^\n]* return 'direction_bt'; +.*direction\s+RL[^\n]* return 'direction_rl'; +.*direction\s+LR[^\n]* return 'direction_lr'; (\r?\n)+ return 'NEWLINE'; \s+ /* skip all whitespace */ \#[^\n]* /* skip comments */ @@ -101,8 +105,20 @@ diagram | elementDef diagram | relationshipDef diagram | directive diagram + | direction diagram | NEWLINE diagram; +direction + : direction_tb + { yy.setDirection('TB');} + | direction_bt + { yy.setDirection('BT');} + | direction_rl + { yy.setDirection('RL');} + | direction_lr + { yy.setDirection('LR');} + ; + requirementDef : requirementType requirementName STRUCT_START NEWLINE requirementBody { yy.addRequirement($2, $1) }; diff --git a/packages/mermaid/src/diagrams/requirement/requirementDb.ts b/packages/mermaid/src/diagrams/requirement/requirementDb.ts index ac5f2535b..64033157f 100644 --- a/packages/mermaid/src/diagrams/requirement/requirementDb.ts +++ b/packages/mermaid/src/diagrams/requirement/requirementDb.ts @@ -53,6 +53,12 @@ const Relationships = { TRACES: 'traces', }; +let direction = 'TB'; +const getDirection = () => direction; +const setDirection = (dir: string) => { + direction = dir; +}; + const getInitialRequirement = (): Requirement => ({ id: '', text: '', @@ -215,7 +221,7 @@ const getData = () => { counter++; } - return { nodes, edges, other: {}, config }; + return { nodes, edges, other: {}, config, direction: getDirection() }; }; export default { @@ -236,6 +242,8 @@ export default { getAccDescription, setDiagramTitle, getDiagramTitle, + getDirection, + setDirection, addElement, getElements, setNewElementType,