Skip to content
Snippets Groups Projects
Commit 1d3076bb authored by George Marchment's avatar George Marchment
Browse files

Update ternary rewrite + added test condition extraction

parent e270aa04
No related branches found
No related tags found
No related merge requests found
Pipeline #14465 failed with stage
in 2 minutes and 5 seconds
......@@ -62,16 +62,17 @@ class Code:
pattern = r"(def)? *(\w+) *\= *([^?\n]+) *\? *([^:\n]+) *\: *([^\n]+)\n"
to_replace = []
for match in re.finditer(pattern, code):
try:
def_variable = ""
if(match.group(1)!=None):
def_variable = match.group(1)
except:
def_variable = ""
variable = match.group(2)
condition = match.group(3).strip()
exp1, exp2 = match.group(4).strip(), match.group(5).strip()
old = match.group(0)
new = f"if ({condition}) {{\n{def_variable} {variable} = {exp1}\n}}\n"
new += f"if (!({condition})) {{\n{def_variable} {variable} = {exp2}\n}}\n\n"
new += f"else {{\n{def_variable} {variable} = {exp2}\n}}\n\n"
#else {{\n{variable} = {exp2}\n}}\n"
#Here we check that it's worked correctly -> that we have done a good parsing
if(get_parenthese_count(condition)==0 and get_parenthese_count(exp1)==0 and get_parenthese_count(exp2)==0 and get_curly_count(condition)==0 and get_curly_count(exp1)==0 and get_curly_count(exp2)==0):
......
import os
import unittest
from src.outils import extract_conditions
class TestExtractConditions(unittest.TestCase):
#TODO -> finish this
def test_1(self):
test = """
if ((params.noCpG == true) && (params.noCHH == true) && (params.noCHG == true)) {error "ERROR: please specify methylation context for analysis"}
else if ((params.noCpG == true) && (params.noCHH == true) && (params.noCHG == false)) {context = "--noCpG --CHG "}
else if ((params.noCpG == true) && (params.noCHH == false) && (params.noCHG == true)) {context = "--noCpG --CHH "}
else if ((params.noCpG == true) && (params.noCHH == false) && (params.noCHG == false)) {context = "--noCpG --CHH --CHG "}
else if ((params.noCpG == false) && (params.noCHH == true) && (params.noCHG == true)) {context = " "}
else if ((params.noCpG == false) && (params.noCHH == true) && (params.noCHG == false)) {context = "--CHG "}
else if ((params.noCpG == false) && (params.noCHH == false) && (params.noCHG == true)) {context = "--CHH "}
else {context = "--CHH --CHG "}
"""
dico = extract_conditions(test)
results = {'(params.noCpG == true) && (params.noCHH == true) && (params.noCHG == true)$$__$$0': (90, 152), '!((params.noCpG == true) && (params.noCHH == true) && (params.noCHG == true)) && (params.noCpG == true) && (params.noCHH == true) && (params.noCHG == false)$$__$$1': (241, 267), '!((params.noCpG == true) && (params.noCHH == true) && (params.noCHG == true)) && !((params.noCpG == true) && (params.noCHH == true) && (params.noCHG == false)) && (params.noCpG == true) && (params.noCHH == false) && (params.noCHG == true)$$__$$2': (356, 382), '!((params.noCpG == true) && (params.noCHH == true) && (params.noCHG == true)) && !((params.noCpG == true) && (params.noCHH == true) && (params.noCHG == false)) && !((params.noCpG == true) && (params.noCHH == false) && (params.noCHG == true)) && (params.noCpG == true) && (params.noCHH == false) && (params.noCHG == false)$$__$$3': (472, 504), '!((params.noCpG == true) && (params.noCHH == true) && (params.noCHG == true)) && !((params.noCpG == true) && (params.noCHH == true) && (params.noCHG == false)) && !((params.noCpG == true) && (params.noCHH == false) && (params.noCHG == true)) && !((params.noCpG == true) && (params.noCHH == false) && (params.noCHG == false)) && (params.noCpG == false) && (params.noCHH == true) && (params.noCHG == true)$$__$$4': (593, 606), '!((params.noCpG == true) && (params.noCHH == true) && (params.noCHG == true)) && !((params.noCpG == true) && (params.noCHH == true) && (params.noCHG == false)) && !((params.noCpG == true) && (params.noCHH == false) && (params.noCHG == true)) && !((params.noCpG == true) && (params.noCHH == false) && (params.noCHG == false)) && !((params.noCpG == false) && (params.noCHH == true) && (params.noCHG == true)) && (params.noCpG == false) && (params.noCHH == true) && (params.noCHG == false)$$__$$5': (696, 714), '!((params.noCpG == true) && (params.noCHH == true) && (params.noCHG == true)) && !((params.noCpG == true) && (params.noCHH == true) && (params.noCHG == false)) && !((params.noCpG == true) && (params.noCHH == false) && (params.noCHG == true)) && !((params.noCpG == true) && (params.noCHH == false) && (params.noCHG == false)) && !((params.noCpG == false) && (params.noCHH == true) && (params.noCHG == true)) && !((params.noCpG == false) && (params.noCHH == true) && (params.noCHG == false)) && (params.noCpG == false) && (params.noCHH == false) && (params.noCHG == true)$$__$$6': (804, 822), '!((params.noCpG == true) && (params.noCHH == true) && (params.noCHG == true)) && !((params.noCpG == true) && (params.noCHH == true) && (params.noCHG == false)) && !((params.noCpG == true) && (params.noCHH == false) && (params.noCHG == true)) && !((params.noCpG == true) && (params.noCHH == false) && (params.noCHG == false)) && !((params.noCpG == false) && (params.noCHH == true) && (params.noCHG == true)) && !((params.noCpG == false) && (params.noCHH == true) && (params.noCHG == false)) && !((params.noCpG == false) && (params.noCHH == false) && (params.noCHG == true))$$__$$7': (830, 854)}
#print(dico)
#for condition in dico:
# print(condition)
# start, end = dico[condition]
# print(test[start:end])
# print()
#print()
self.assertEqual(results, dico)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment