Advertisement
Guest User

Untitled

a guest
Mar 18th, 2019
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.77 KB | None | 0 0
  1. def __iter__(self):
  2. '''an iterator over MultiNodes
  3. '''
  4. def traverse(current, nodes=[]):
  5.  
  6. # Case 1: We are at the root (and have list)
  7. if isinstance(current.children, list):
  8. children = current.children
  9. else:
  10. children = []
  11. for tag in current.children:
  12. children += current.children[tag]
  13.  
  14. nodes = nodes + children
  15.  
  16. # Traverse remainder of children
  17. for child in children:
  18. traverse(child, nodes)
  19.  
  20. for node in nodes:
  21. yield node
  22.  
  23. # Call function recursively
  24. nodes = []
  25. for node in traverse(self.root, nodes):
  26. yield node
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement