From 78099d8b0b3a483c6d91ca1224ba9af743aeb1a0 Mon Sep 17 00:00:00 2001
From: George Marchment <georgemarchment@yahoo.fr>
Date: Thu, 13 Mar 2025 15:49:39 +0100
Subject: [PATCH] Update to the replacement of parameters -> so it doesn't
 replace a subset by mistake

---
 src/call.py | 12 +++++++-----
 1 file changed, 7 insertions(+), 5 deletions(-)

diff --git a/src/call.py b/src/call.py
index adbf2ca..7a11909 100644
--- a/src/call.py
+++ b/src/call.py
@@ -6,7 +6,7 @@ import time
 
 from .code_ import Code
 from .condition import Condition
-from .outils import get_next_param
+from .outils import get_next_param, replace_group1
 from .executor import Executor
 from .bioflowinsighterror import BioFlowInsightError
 from . import constant
@@ -83,7 +83,8 @@ class Call(Executor):
                 if(param.get_type()=="Call"):
                     #If it's not a function -> then we rewrite it
                     if(param.get_first_element_called().get_type()!="Function"):
-                        code = code.replace(param.get_code(get_OG=True), param_new_name)
+                        code = replace_group1(code, fr"[^\w]({re.escape(param.get_code(get_OG=True))})", param_new_name)
+                        #code = code.replace(param.get_code(get_OG=True), param_new_name)
                         new_bit = param.simplify_code(new_name = param_new_name)
                         code = code.replace(tag_to_add, f"{tag_to_add}\n{new_bit}")
 
@@ -91,8 +92,8 @@ class Call(Executor):
                 elif(param.get_type()=="Operation"):
                     #If it's an artificial operation -> we don't need to do anything
                     if(not param.get_artificial_status()):
-                    
-                        code = code.replace(param.get_code(get_OG=True), param_new_name)
+                        code = replace_group1(code, fr"[^\w]({re.escape(param.get_code(get_OG=True))})", param_new_name)
+                        #code = code.replace(param.get_code(get_OG=True), param_new_name)
                         lines = param.simplify_code().split('\n')
                         if(len(lines)==1):
                             new_bit = f"{param_new_name} = {lines[0]}"
@@ -106,7 +107,8 @@ class Call(Executor):
                     raise Exception("This shouldn't happen")
                     None
                 elif(param.get_type()=="Emitted"):
-                    code = code.replace(param.get_code(get_OG=True), param_new_name)
+                    code = replace_group1(code, fr"[^\w]({re.escape(param.get_code(get_OG=True))})", param_new_name)
+                    #code = code.replace(param.get_code(get_OG=True), param_new_name)
                     new_bit = f"{param_new_name} = {param.simplify_code()}"
                     code = code.replace(tag_to_add, f"{tag_to_add}\n{new_bit}")
                 else:
-- 
GitLab