class BLOCK_FUNCTION(): #this is the shell name = "Generic" def __init__(self): pass def __name__(self): return self.name def on(self, *args): return True def off(self, *args): return True class func_and(BLOCK_FUNCTION): name = "And" def on(self,*args): if all(args): return True else: return False class func_or(BLOCK_FUNCTION): name = "Or" def on(self,*args): if any(args): return True else: return False class func_not(BLOCK_FUNCTION):#returns the opposite of the first term, ignoring the rest name = "Not" def on(self,*args): if args: return not args[0] else: return False class func_add(BLOCK_FUNCTION): name = "+" def on(self,*args): if args: if len(args) > 2: val = int(args[0]) val += int(args[1]) args[2].set(val) class func_gt(BLOCK_FUNCTION): name = ">" def on(self,*args): if len(args)>1: if args[0] > args[1]: return True else: return False else: return False class func_set(BLOCK_FUNCTION): name = "Set" def on(self,*args): if args: if len(args) > 1: args[0].set(args[1]) return args[0] class func_close(BLOCK_FUNCTION): name = "Close" def on(self,*args): if args: args[0].set(True) def off(self,*args): if args: args[0].set(False) BLOCK_FUNCTION_LIST = [func_and, func_or, func_not, func_add, func_gt, func_set, func_close] BLOCK_FUNCTION_DICT = dict(zip(map(lambda x:x.name,BLOCK_FUNCTION_LIST),BLOCK_FUNCTION_LIST)) DEFAULT = func_close