in aristotle/aristotle.py [0:0]
def evaluate(self, myobj):
"""Recursive evaluation function that deals with BooleanAlgebra elements from boolean.py."""
if myobj.isliteral:
if isinstance(myobj, boolean.boolean.NOT):
return self.get_sids(self.metadata_map[myobj.args[0].obj], negate=True)
else:
return self.get_sids(self.metadata_map[myobj.obj])
elif isinstance(myobj, boolean.boolean.OR):
retlist = []
for i in range(0, len(myobj.args)):
retlist = list(set(retlist + self.evaluate(myobj.args[i])))
return retlist
elif isinstance(myobj, boolean.boolean.AND):
retlist = list(frozenset(self.evaluate(myobj.args[0])))
for i in range(1, len(myobj.args)):
retlist = list(frozenset(retlist).intersection(self.evaluate(myobj.args[i])))
return retlist
# not reached
return None