|
@@ -304,12 +304,15 @@ def dict_keys(a, **remainder):
|
|
|
raise PrimitiveFinished(result)
|
|
|
|
|
|
def dict_reverse(a, b, **remainder):
|
|
|
- keys = yield [("RDK", [a])]
|
|
|
- keys = list(keys)
|
|
|
- values = yield [("RDN", [a, i]) for i in keys]
|
|
|
- for i, v in enumerate(values):
|
|
|
- if v == b:
|
|
|
- raise PrimitiveFinished(keys[i])
|
|
|
+ edges = yield [("RO", [a])]
|
|
|
+ expanded_edges = yield [("RE", [i]) for i in edges]
|
|
|
+ for i, edge in enumerate(expanded_edges):
|
|
|
+ if b == edge[1]:
|
|
|
+ # Found our edge: edges[i]
|
|
|
+ outgoing = yield [("RO", [edges[i]])]
|
|
|
+ result = yield [("RE", [outgoing[0]])]
|
|
|
+ raise PrimitiveFinished(result[1])
|
|
|
+
|
|
|
result = yield [("CNV", ["(unknown: %s)" % b])]
|
|
|
raise PrimitiveFinished(result)
|
|
|
|