From 8b00c8a6b0d9ba71541ee25b649a2e9b673b5018 Mon Sep 17 00:00:00 2001
From: Bryan Brancotte <bryan.brancotte@pasteur.fr>
Date: Tue, 13 Feb 2024 15:09:26 +0100
Subject: [PATCH] quoting labels to prevent error with symbole equal in labels

---
 src/outils_graph.py | 12 +++++++++---
 1 file changed, 9 insertions(+), 3 deletions(-)

diff --git a/src/outils_graph.py b/src/outils_graph.py
index 7b4aae0..95a9313 100644
--- a/src/outils_graph.py
+++ b/src/outils_graph.py
@@ -45,22 +45,28 @@ def generate_graph_mermaid(filename, dico, label_node = True, label_edge = True,
         import re
         for match in re.finditer(r"object at (\w+)>", txt):
             return match.group(1)
+
+    def quoted(label):
+        if not label.strip():
+            return label
+        return f'"{label}"'
+
     def get_graph_wo_operations_mermaid_temp(dico, txt, count):
         count+=1
         for node in dico["nodes"]:
             tab= count*"\t"
             if(node['name']==''):
                 if(label_node):
-                    txt+=f"{tab}{get_id(node['id'])}(({node['xlabel']}));\n"
+                    txt+=f"{tab}{get_id(node['id'])}(({quoted(node['xlabel'])}));\n"
                 else:
                     txt+=f"{tab}{get_id(node['id'])}(({' '}));\n"
             else:
-                txt+=f"{tab}{get_id(node['id'])}({node['name']});\n"
+                txt+=f"{tab}{get_id(node['id'])}({quoted(node['name'])});\n"
         
         for edge in dico["edges"]:
             tab= count*"\t"
             if(label_edge):
-                txt+=f"{tab}{get_id(edge['A'])}--{edge['label']}-->{get_id(edge['B'])};\n"
+                txt+=f"{tab}{get_id(edge['A'])}--{quoted(edge['label'])}-->{get_id(edge['B'])};\n"
             else:
                 txt+=f"{tab}{get_id(edge['A'])}-->{get_id(edge['B'])};\n"
         for subworkflow in dico["subworkflows"]:
-- 
GitLab