summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexander Dutton <alexander.dutton@it.ox.ac.uk>2015-02-15 19:45:43 +0000
committerAlexander Dutton <alexander.dutton@it.ox.ac.uk>2015-02-15 19:45:43 +0000
commit3f460a54c2004802cc96b1c619b5edc011ec555b (patch)
tree2487872b51265abdb83ce721ec9bfdfcfd602619
parentaf04ec01a9aa10a723677875ddf1fe6647d6a541 (diff)
downloadpython-json-pointer-3f460a54c2004802cc96b1c619b5edc011ec555b.tar.gz
Simplify `walk` method. No need to look before we leap.
-rw-r--r--jsonpointer.py29
1 files changed, 7 insertions, 22 deletions
diff --git a/jsonpointer.py b/jsonpointer.py
index 0f115d7..85afe00 100644
--- a/jsonpointer.py
+++ b/jsonpointer.py
@@ -223,29 +223,14 @@ class JsonPointer(object):
part = self.get_part(doc, part)
- assert (type(doc) in (dict, list) or hasattr(doc, '__getitem__')), "invalid document type %s" % (type(doc),)
-
- if isinstance(doc, Mapping):
- try:
- return doc[part]
-
- except KeyError:
- raise JsonPointerException("member '%s' not found in %s" % (part, doc))
-
- elif isinstance(doc, Sequence):
-
- if part == '-':
- return EndOfList(doc)
-
- try:
- return doc[part]
-
- except IndexError:
- raise JsonPointerException("index '%s' is out of bounds" % (part, ))
-
- else:
- # Object supports __getitem__, assume custom indexing
+ if part == '-' and isinstance(doc, Sequence):
+ return EndOfList(doc)
+ try:
return doc[part]
+ except KeyError:
+ raise JsonPointerException("member '%s' not found in %s" % (part, doc))
+ except IndexError:
+ raise JsonPointerException("index '%s' is out of bounds" % (part, ))
def contains(self, ptr):
"""Returns True if self contains the given ptr"""