summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorpeterlits zo <peterlitszo@outlook.com>2021-10-28 18:11:58 +0800
committerPeterlits Zo <peterlitszo@outlook.com>2021-10-31 18:15:05 +0800
commit73cb9ef10ac748141f066ada2f29f0f6daf3eb01 (patch)
tree9b9e738b0335d63fb888606ffa60158409228ee9
parent7d146bd7caf196bd04b44bdb6d395e91256fa88c (diff)
downloadpython-json-pointer-73cb9ef10ac748141f066ada2f29f0f6daf3eb01.tar.gz
Add method and add classmethod tag
Set get_part as a classmethod, and add method `get_parts` For: #36, #45
-rw-r--r--jsonpointer.py14
1 files changed, 10 insertions, 4 deletions
diff --git a/jsonpointer.py b/jsonpointer.py
index 29b4c80..53191ef 100644
--- a/jsonpointer.py
+++ b/jsonpointer.py
@@ -193,7 +193,7 @@ class JsonPointer(object):
for part in self.parts[:-1]:
doc = self.walk(doc, part)
- return doc, self.get_part(doc, self.parts[-1])
+ return doc, JsonPointer.get_part(doc, self.parts[-1])
def resolve(self, doc, default=_nothing):
"""Resolves the pointer against doc and returns the referenced object"""
@@ -228,7 +228,8 @@ class JsonPointer(object):
parent[part] = value
return doc
- def get_part(self, doc, part):
+ @classmethod
+ def get_part(cls, doc, part):
"""Returns the next step in the correct type"""
if isinstance(doc, Mapping):
@@ -239,7 +240,7 @@ class JsonPointer(object):
if part == '-':
return part
- if not self._RE_ARRAY_INDEX.match(str(part)):
+ if not JsonPointer._RE_ARRAY_INDEX.match(str(part)):
raise JsonPointerException("'%s' is not a valid sequence index" % part)
return int(part)
@@ -252,12 +253,17 @@ class JsonPointer(object):
else:
raise JsonPointerException("Document '%s' does not support indexing, "
"must be mapping/sequence or support __getitem__" % type(doc))
+
+ def get_parts(self):
+ """Returns the list of the parts. For example, JsonPointer('/a/b').get_parts() == ['a', 'b']"""
+
+ return self.parts
def walk(self, doc, part):
""" Walks one step in doc and returns the referenced part """
- part = self.get_part(doc, part)
+ part = JsonPointer.get_part(doc, part)
assert hasattr(doc, '__getitem__'), "invalid document type %s" % (type(doc),)