Advertisement
Uno-Dan

A stroll in the park.

Mar 17th, 2019
152
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.48 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 not isinstance(index, list) 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('/', 1)
  27.                 el = self.element(elements[0], index[0])
  28.  
  29.                 if len(index[1:]) == 1:
  30.                     idx = f'{elements[1]}{index[1]}'.lower()
  31.                     if idx in el.nodes:
  32.                         return el.nodes[idx]
  33.                 return el.element(elements[1], index[1:])
  34.  
  35.             elif '/' in _type:
  36.                 elements = _type.split('/')
  37.                 el = self.element(elements[0], 0)
  38.                 return el.element(elements[1], 0)
  39.  
  40.             return get_element(nodes)
  41.  
  42.         return walk(self)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement