Advertisement
Uno-Dan

A walk in the park

Mar 17th, 2019
155
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.26 KB | None | 0 0
  1.     def element(self, _type, index=0):
  2.         if isinstance(index, int):
  3.             index = f'{_type.lower()}{index}'
  4.         elif isinstance(index, tuple):
  5.             index = list(index)
  6.  
  7.         def walk(parent):
  8.             nodes = parent.get_nodes()
  9.  
  10.             if isinstance(index, int) and index in nodes:
  11.                 return nodes[index]
  12.  
  13.             def get_element(_nodes):
  14.                 for node in _nodes.values():
  15.                     if node.type == _type and index == node.id:
  16.                         return node
  17.                     if node.has_children:
  18.                         node = walk(node)
  19.                         if node:
  20.                             return node
  21.                 return None
  22.  
  23.             if not isinstance(index, list) and index in nodes:
  24.                 return nodes[index]
  25.             elif isinstance(index, list) and '/' in _type:
  26.                 elements = _type.split('/')
  27.                 el = self.element(elements[0])
  28.                 return el.element(elements[1])
  29.  
  30.             elif '/' in _type:
  31.                 elements = _type.split('/')
  32.                 el = self.element(elements[0])
  33.                 return el.element(elements[1])
  34.  
  35.             return get_element(nodes)
  36.  
  37.         return walk(self)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement