Mercurial > p > roundup > code
diff roundup/mlink_expr.py @ 6412:a0c0ee3ed8b1
Tests for Link expressions
.. and fixes for anydbm backend, this now passes all the new tests.
| author | Ralf Schlatterbeck <rsc@runtux.com> |
|---|---|
| date | Mon, 17 May 2021 17:35:50 +0200 |
| parents | 8bc5faeb7677 |
| children | 7b090bb35c25 |
line wrap: on
line diff
--- a/roundup/mlink_expr.py Thu May 13 10:28:45 2021 +0200 +++ b/roundup/mlink_expr.py Mon May 17 17:35:50 2021 +0200 @@ -87,16 +87,23 @@ class Expression: - def __init__(self, v): + def __init__(self, v, is_link=False): try: opcodes = [int(x) for x in v] if min(opcodes) >= -1: raise ValueError() compiled = compile_expression(opcodes) - self.evaluate = lambda x: compiled.evaluate([int(y) for y in x]) + if is_link: + self.evaluate = lambda x: compiled.evaluate( + x and [int(x)] or []) + else: + self.evaluate = lambda x: compiled.evaluate([int(y) for y in x]) except: - if '-1' in v: + if is_link: + v = [None if x == '-1' else x for x in v] + self.evaluate = lambda x: x in v + elif '-1' in v: v = [x for x in v if int(x) > 0] self.evaluate = lambda x: bool(set(x) & set(v)) or not x else:
