algorithm-nearest-in-parent: Difference between revisions

From Microformats Wiki
Jump to navigation Jump to search
(added category)
(Algorithm was very badly coded.)
 
(3 intermediate revisions by 3 users not shown)
Line 5: Line 5:
   p = start_element.parent
   p = start_element.parent
   while p:
   while p:
    as = []
     for c in p.children:
     for c in ordered_depth_first_element_iter(p):
       if condition_test(c):
       if condition_test(c):
         as.append(c)
         return c
 
    if as:
      return as
 
     p = p.parent
     p = p.parent
   return None
   return None
</nowiki></pre>
</nowiki></pre>
[[Category:Tools]]

Latest revision as of 01:44, 11 October 2010

This algorithm will return all the elements in a DOM that meet the condition_test by checking each node in the parent hierarchy above the start_element on up. Once a result is found at any level of the parent hierarchy, we stop checking.

def nearest_in_parent(start_element, condition_test):
  p = start_element.parent
  while p:
    for c in p.children:
      if condition_test(c):
        return c
    p = p.parent
  return None