Changeset 2844:817038550912 in livinglogic.python.xist

Show
Ignore:
Timestamp:
08/02/07 22:12:51 (12 years ago)
Author:
Walter Doerwald <walter@…>
Branch:
default
Message:

Optimize xfind.CSSTypeSelector.match() and html.applycss().

Location:
src/ll/xist
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • src/ll/xist/ns/html.py

    r2841 r2844  
    14761476                ) 
    14771477                # put the style attribute into the order as the last of the selectors with ID weight (see http://www.w3.org/TR/REC-CSS1#cascading-order) 
    1478                 done = False 
    1479                 for data in rules: 
    1480                     if data[0] > styledata[0] and not done: 
     1478                def doiter(): 
     1479                    done = False 
     1480                    for data in rules: 
     1481                        if not done and data[0] > styledata[0]: 
     1482                            yield styledata 
     1483                            done = True 
     1484                        yield data 
     1485                    if not done: 
    14811486                        yield styledata 
    1482                         done = True 
    1483                     yield data 
    1484                 if not done: 
    1485                     yield styledata 
    1486                 return 
    1487         for x in rules: 
    1488             yield x 
     1487                return doiter() 
     1488        return rules 
    14891489     
    14901490    rules = [] 
  • src/ll/xist/xfind.py

    r2836 r2844  
    15501550 
    15511551    def match(self, path): 
    1552         if not path: 
    1553             return False 
    1554         node = path[-1] 
    1555         if self.type != "*" and node.xmlname != self.type: 
    1556             return False 
    1557         if self.xmlns != "*" and node.xmlns != self.xmlns: 
    1558             return False 
    1559         for selector in self.selectors: 
    1560             if not selector.match(path): 
    1561                 return False 
    1562         return True 
     1552        if path: 
     1553            node = path[-1] 
     1554            if self.type == "*" or node.xmlname == self.type: 
     1555                if self.xmlns == "*" or node.xmlns == self.xmlns: 
     1556                    for selector in self.selectors: 
     1557                        if not selector.match(path): 
     1558                            return False 
     1559                    return True 
     1560        return False 
    15631561 
    15641562    def __str__(self):