Changeset 2845:6acaab42f800 in livinglogic.python.xist

Show
Ignore:
Timestamp:
08/03/07 15:40:35 (12 years ago)
Author:
Walter Doerwald <walter@…>
Branch:
default
Message:

Optimize html.applycss() for speed.

Don't use foo.attrs.bar, but foo.attrsbar?.
Delete stylesheets before iterating the tree for matches. (The stylesheets have
been parsed before, so this won't break anything.

Remove unused import.

Files:
1 modified

Legend:

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

    r2844 r2845  
    13841384    if path: 
    13851385        node = path[-1] 
    1386         return (isinstance(node, style) and unicode(node.attrs.type) == "text/css") or (isinstance(node, link) and unicode(node.attrs.rel) == "stylesheet") 
     1386        return (isinstance(node, style) and unicode(node.attrs["type"]) == "text/css") or (isinstance(node, link) and unicode(node.attrs["rel"]) == "stylesheet") 
    13871387    return False 
    13881388 
     
    14401440         
    14411441    def __iter__(self): 
    1442         import cssutils 
    14431442        for cssnode in self.node.walknode(_isstyle): 
    14441443            if isinstance(cssnode, style): 
     
    14471446                    stylesheet.href = str(self.base) 
    14481447                if "media" in cssnode.attrs: 
    1449                     stylesheet.media = unicode(cssnode.attrs.media) 
     1448                    stylesheet.media = unicode(cssnode.attrs["media"]) 
    14501449                for rule in self._doimport(stylesheet, self.base): 
    14511450                    yield rule 
    14521451            else: # link 
    14531452                if "href" in cssnode.attrs: 
    1454                     href = cssnode.attrs.href.asURL() 
     1453                    href = cssnode.attrs["href"].asURL() 
    14551454                    if self.base is not None: 
    14561455                        href = self.base/href 
     
    14601459                    stylesheet.href = str(href) 
    14611460                    if "media" in cssnode.attrs: 
    1462                         stylesheet.media = unicode(cssnode.attrs.media) 
     1461                        stylesheet.media = unicode(cssnode.attrs["media"]) 
    14631462                    for rule in self._doimport(stylesheet, href): 
    14641463                        yield rule 
     
    14681467    def iterstyles(node, rules): 
    14691468        if "style" in node.attrs: 
    1470             style = node.attrs.style 
     1469            style = node.attrs["style"] 
    14711470            if not style.isfancy(): 
    14721471                styledata = ( 
     
    14951494    rules.sort(key=operator.itemgetter(0)) 
    14961495    for path in node.walk(xsc.Element): 
     1496        del path[-1][_isstyle] # drop style sheet nodes 
    14971497        if path[-1].Attrs.isallowed("style"): 
    14981498            styles = {} 
     
    15071507                    style = " ".join("%s: %s;" % (name, value) for (count, name, value) in sorted(styles.itervalues())) 
    15081508                    if style: 
    1509                         path[-1].attrs.style = style 
    1510         del path[-1][_isstyle] # drop style sheet nodes 
     1509                        path[-1].attrs["style"] = style 
    15111510 
    15121511