diff options
author | Alexander Dutton <alexander.dutton@it.ox.ac.uk> | 2015-02-15 19:45:43 +0000 |
---|---|---|
committer | Alexander Dutton <alexander.dutton@it.ox.ac.uk> | 2015-02-15 19:45:43 +0000 |
commit | 3f460a54c2004802cc96b1c619b5edc011ec555b (patch) | |
tree | 2487872b51265abdb83ce721ec9bfdfcfd602619 /jsonpointer.py | |
parent | af04ec01a9aa10a723677875ddf1fe6647d6a541 (diff) | |
download | python-json-pointer-3f460a54c2004802cc96b1c619b5edc011ec555b.tar.gz |
Simplify `walk` method. No need to look before we leap.
Diffstat (limited to 'jsonpointer.py')
-rw-r--r-- | jsonpointer.py | 29 |
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""" |