From 3dd4c955e4d0c6ff3d66ac3f4c98847e6fff088b Mon Sep 17 00:00:00 2001
From: George Marchment <georgemarchment@yahoo.fr>
Date: Tue, 25 Mar 2025 14:34:32 +0100
Subject: [PATCH] Update the get_code of operations

---
 src/channel.py   | 2 +-
 src/code_.py     | 3 ++-
 src/executor.py  | 8 --------
 src/main.py      | 2 +-
 src/operation.py | 7 +++++--
 5 files changed, 9 insertions(+), 13 deletions(-)

diff --git a/src/channel.py b/src/channel.py
index f0ffc4b..bcd76de 100644
--- a/src/channel.py
+++ b/src/channel.py
@@ -26,7 +26,7 @@ class Channel(Nextflow_Building_Blocks):
         
 
 
-    def get_code(self, get_OG = True):
+    def get_code(self, get_OG = True, replace_calls =False, clean_pipe=True, remove_emit_and_take=True):
         """Method that returns the channels code
 
         Keyword arguments:
diff --git a/src/code_.py b/src/code_.py
index 0a6a0cb..2ba19ea 100644
--- a/src/code_.py
+++ b/src/code_.py
@@ -107,7 +107,8 @@ class Code:
                                 _, end_condition = match.span(1)
                                 extracted_condition = get_code_until_parenthese_count(code=temp_code[end_condition:], val=-1)
                                 condition = extracted_condition[:-1]
-                                body = extarcted.replace(extracted_condition.strip(), "").strip()
+                                #body = extarcted.replace(extracted_condition.strip(), "", 1).strip()
+                                body = re.sub(r"if *\("+re.escape(extracted_condition.strip()), "", all).strip()
                                 if(body!="" and body[0]!="{"):
                                     new = f"if ({condition}) {{\n{body}\n}}\n"
                                     to_replace.append((all, new))
diff --git a/src/executor.py b/src/executor.py
index bb09018..0073716 100644
--- a/src/executor.py
+++ b/src/executor.py
@@ -117,14 +117,6 @@ class Executor(Nextflow_Building_Blocks):
         self.origin.add_element_to_elements_being_called(element)
 
 
-    def get_code(self, get_OG=False):
-        if(get_OG):
-            if(self.OG_code==""):
-                return self.code.get_code()
-            else:
-                return self.OG_code
-        else:
-            return self.code.get_code()
     
     def clean_pipe_operator(self, pipe):
     
diff --git a/src/main.py b/src/main.py
index 6101b3c..477c0b5 100644
--- a/src/main.py
+++ b/src/main.py
@@ -54,7 +54,7 @@ class Main(Nextflow_Building_Blocks):
         
         for exe in sorted_executor_2_length:
             if(exe.get_type()=="Call" or exe.get_type()=="Operation"):
-                old = exe.get_code(get_OG = True, remove_emit_and_take = True, replace_calls = False)
+                old = exe.get_code(remove_emit_and_take = True, replace_calls = False)
                 new = exe.simplify_code(return_tab = False)
                 if(new!=old):
                     temp = code
diff --git a/src/operation.py b/src/operation.py
index d539056..3b2b9ff 100644
--- a/src/operation.py
+++ b/src/operation.py
@@ -683,7 +683,7 @@ class Operation(Executor):
     def write_summary(self, address, tab = 0):
         file = open(address, "a") 
         file.write("  "*tab+f"{self}\n") 
-        file.write("  "*(tab+1)+"* Code : "+str(self.get_code())+ "\n")
+        file.write("  "*(tab+1)+"* Code : "+str(self.get_code(get_OG=True))+ "\n")
         file.write("  "*(tab+1)+"* Origins"+ "\n")
         for o in self.get_origins():
             file.write("  "*(tab+1+2)+o.get_code()+ f" '{o.get_type()}'\n")
@@ -702,6 +702,8 @@ class Operation(Executor):
         if(get_OG):
             if(self.OG_code!=""):
                 code = self.OG_code
+            return code
+            
         if(clean_pipe):
             code, self.dico_OG_call_2_new_call = self.clean_pipe_operator(code)
   
@@ -957,7 +959,8 @@ class Operation(Executor):
         to_add = []
         dico_origin_2_replace = {}
         for o in self.origins:
-            OG_code = o.get_code(get_OG=True)
+            #OG_code = o.get_code(get_OG=True)
+            OG_code = o.get_code(replace_calls =False, clean_pipe=True, remove_emit_and_take=True)
             try:
                 tmp = dico_origin_2_replace[OG_code]
             except:
-- 
GitLab