rdr-py / code / addCombinationRules.py
addCombinationRules.py
Raw
"""
*******************************************************
Owner: Ashutosh Jha
For: APPCAIR BITS Pilani Goa Campus, Reflexis Systems
Function Name: addCombinationRules
THis function takes a Tree() Node, current row and a 
bool value representing string type condition. The 
function adds the input condition and data to the node.
*******************************************************
"""
def addCombinationRules(node,rule_list,cur_row,isstr):
    #converting the expression into input condition
    node.inp_cond = "("
    for i in range(0,len(rule_list)):
        if((rule_list[i]!="(") and (rule_list[i]!=")") and (rule_list[i]!="/")
            and (rule_list[i]!="*") and (rule_list[i]!="+") and (rule_list[i]!="-")):
            node.inp_cond = node.inp_cond + "cur_row['" + rule_list[i] + "']"
        else:
            #print(rule_list[i])
            node.inp_cond = node.inp_cond + rule_list[i]
    node.inp_cond = node.inp_cond + ")"
    print("Value of your expression for Current row is:",eval(node.inp_cond))
    #adding comparators and values to which comparison has to be made
    if((isstr == "y") or (isstr == "Y")):
        val_cmp = input("Enter the string to compare the expression with, i.e. enter RHS value:")
        node.inp_cond = node.inp_cond + "==" + "'" + val_cmp + "'"
    else:
        op_dict = {1:"==",2:"<=",3:">="}
        print("Kindly choose the operator by indicating" + 
              " the serial number from the following:")
        for key, value in op_dict.items():
            print(key, ' : ', value)
        op = int(input())
        val_cmp = float(input("Enter the value to compare the expression with, i.e. enter RHS:"))
        if op in [1,2,3]:
            node.inp_cond = node.inp_cond + op_dict[op] + str(val_cmp) 
        else:
            print("Fail: Wrong input for operator. Do what is told! Exiting for now!")
            exit(0)
    node.data ="""
if(eval(node.inp_cond) == True):
    node.belongs = True
    print("Row No.",z,"satisfies condition in node",node.name)
else:
    print("Row No.",z,"Does not satisfy condition in node",node.name)
    node.belongs = False"""