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:

Roundup Issue Tracker: http://roundup-tracker.org/