diff --git a/src/channel.py b/src/channel.py index f0ffc4b3ea08185484bb279a18b45b80d348dd0a..bcd76deb273eb8555e2b6b7ae29c1fd59b81dd0e 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 0a6a0cb4720bc2ed8acb6b3759ed1fee0e51131f..2ba19ea000ae036e6c1e278a9a08db94156e925a 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 bb090185d16ea9ce62abd60ca311e1634b69c132..0073716e3ec6b34cb6cb2aaf9c8ce07cc24ff681 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 6101b3c6d635baf73edd40980977fbe2f89a90a9..477c0b5995bbdd7af6d81c928cb7af72fde61336 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 d5390566c60309d9f16824fa729d144e8607fe76..3b2b9ff99f19e5aadc4caaeb4ecc249e65b6cbae 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: