Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def get(self, uri=None):
- if not uri:
- return self._values
- self._target_found = False
- def walk(_uri, values):
- segments = _uri.split('/', 1)
- if segments[0] not in values:
- def walker(_value):
- if segments[0] in _value and len(segments) == 1:
- self._target_found = True
- return _value[segments[0]]
- elif len(segments) == 1 and not isinstance(_value, dict):
- return None
- for key, _item in _value.items():
- if segments[0] == key:
- if len(segments) == 1:
- self._target_found = True
- return _item
- else:
- return walk(segments[1], _item)
- else:
- return walker(_item)
- values = walker(values)
- if self._target_found or not isinstance(values, dict):
- return values
- elif len(segments) == 1:
- if segments[0] in values:
- return values[segments[0]]
- return None
- else:
- for item in values.values():
- if isinstance(item, dict):
- return walk(segments[1], item)
- return walk(uri, self._values)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement