diff wsgraph/model.py @ 8:f1f7a505e0d0

__contains__ method
author Jeff Hammel <jhammel@mozilla.com>
date Mon, 10 Dec 2012 17:08:02 -0800
parents cfcfa093e4b4
children 0affca1f4dc0
line wrap: on
line diff
--- a/wsgraph/model.py	Mon Dec 10 13:55:58 2012 -0800
+++ b/wsgraph/model.py	Mon Dec 10 17:08:02 2012 -0800
@@ -1,4 +1,5 @@
 from abc import abstractmethod
+from utils import iterable
 
 class GraphModel(object):
 
@@ -24,6 +25,21 @@
         if key is a 2-tuple/list, return the edge of that name
         """
 
+        if isinstance(key, basestring) or (not iterable(key)):
+            return self.node(key)
+        else:
+            return self.edge(*key)
+
+    def __contains__(self, key):
+        """
+        if key is ..., returns if that node is in the graph
+        if key is a 2-tuple/list, returns if the edge is in the graph
+        """
+        # XXX not necessarily the best implementation!
+        if isinstance(key, basestring) or (not iterable(key)):
+            return key in self.nodes()
+        else:
+            return tuple(key) in self.edges()
 
 class MemoryCache(GraphModel):