ZIO
Python and C++ interface to ZeroMQ and Zyre
rules.py
Go to the documentation of this file.
1 #!/usr/bin/env python3
2 '''
3 Support for rules
4 '''
5 from rule import Rule # bv's hacked version
6 from . import lispish
7 
8 import logging
9 log = logging.getLogger("zio")
10 
11 def parse(rule_object, **params):
12  '''
13  Returned a parsed rule object.
14  '''
15  params.update(rule_object.get('attr',{}))
16  log.debug(f'rule attributes: {params}')
17  parser = lispish.parser(params)
18  scode = rule_object['rule']
19  try:
20  parsed = parser.parseString(scode)
21  except KeyError as e:
22  log.error(f'key error "{scode}": "{e}"')
23  raise
24  except lispish.ParseException:
25  log.error(f'parse error with rule:\n{scode}')
26  raise
27  return parsed[0]
28 
29 def evaluate(parsed):
30  '''
31  Evaluate a parsed rule, return True/False
32  '''
33  expr = Rule(parsed, return_bool = True)
34  return expr.match();
35 
def evaluate(parsed)
Definition: rules.py:29
def parse(rule_object, params)
Definition: rules.py:11