From: Tim Vieira Date: Wed, 24 Jul 2013 22:36:50 +0000 (-0400) Subject: fix issue #63. X-Git-Url: https://hydra-www.ietfng.org/gitweb/?a=commitdiff_plain;h=a1c668d8709df2a6a6f83b26e85bd096732bbda9;p=dyna2 fix issue #63. --- diff --git a/src/Dyna/Backend/Python/interpreter.py b/src/Dyna/Backend/Python/interpreter.py index a890a76..cdff442 100644 --- a/src/Dyna/Backend/Python/interpreter.py +++ b/src/Dyna/Backend/Python/interpreter.py @@ -158,13 +158,21 @@ class Interpreter(object): if was == now: # nothing to do. return + # special handling for with_key, forks a second update k = self.build('$key/1', item) - if k.value is not None: - self.replace(k, None) + if hasattr(now, 'fn') and now.fn == 'with_key/2': now, key = now.args - self.replace(self.build('$key/1', item), key) + self.replace(k, key) + if was == now: + return + else: + # retract $key when we retract the item or no longer have a with_key + # as the value. + if k.value is not None: + self.replace(k, None) + # delete existing value before so we can replace it if was is not None: self.push(item, was, delete=True)