Changeset 2829:04ce64167561 in livinglogic.python.xist

Show
Ignore:
Timestamp:
07/31/07 13:23:30 (12 years ago)
Author:
Walter Doerwald <walter@…>
Branch:
default
Message:

xfind.css() accepts CSSStyleRules now. html.itercssrules has a getiem() now.

Location:
src/ll/xist
Files:
2 modified

Legend:

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

    r2828 r2829  
    2222import os, cgi, contextlib 
    2323 
    24 from ll import url 
     24from ll import url, misc 
    2525from ll.xist import xsc, utils, sims, xfind 
    2626from ll.xist.ns import xml 
     
    14221422                self._fixurl(rule, base) 
    14231423                yield rule 
     1424 
     1425    def __getitem__(self, index): 
     1426        return misc.item(self, index) 
    14241427 
    14251428    def __iter__(self): 
  • src/ll/xist/xfind.py

    r2827 r2829  
    16271627        else: 
    16281628            raise ValueError("can't happen") 
     1629    elif isinstance(selectors, cssstylerule.CSSStyleRule): 
     1630        selectors = selectors.selectorList 
    16291631    else: 
    1630         raise TypeError # FIXME: cssutils object 
     1632        raise TypeError("can't handle %r" % type(selectors)) 
    16311633    orcombinators = [] 
    16321634    for selector in selectors: 
     
    16381640        inattr = False 
    16391641        for x in selector.seq: 
    1640             type = x["type"] 
    1641             value = x["value"] 
    1642             if type == "prefix": 
    1643                 prefix = value 
    1644             elif type == "pipe": 
     1642            t = x["type"] 
     1643            v = x["value"] 
     1644            if t == "prefix": 
     1645                prefix = v 
     1646            elif t == "pipe": 
    16451647                if prefix != "*": 
    16461648                    try: 
     
    16501652                    rule.xmlns = xmlns 
    16511653                prefix = None 
    1652             elif type == "type": 
    1653                 rule.type = value 
    1654             elif type == "id": 
    1655                 rule.selectors.append(hasid(value.lstrip("#"))) 
    1656             elif type == "classname": 
    1657                 rule.selectors.append(hasclass(value)) 
    1658             elif type == "pseudoname": 
     1654            elif t == "type": 
     1655                rule.type = v 
     1656            elif t == "id": 
     1657                rule.selectors.append(hasid(v.lstrip("#"))) 
     1658            elif t == "classname": 
     1659                rule.selectors.append(hasclass(v)) 
     1660            elif t == "pseudoname": 
    16591661                try: 
    1660                     rule.selectors.append(_pseudoname2class[value]()) 
     1662                    rule.selectors.append(_pseudoname2class[v]()) 
    16611663                except KeyError: 
    1662                     raise ValueError("unknown pseudoname %s" % value) 
    1663             elif type == "function": 
     1664                    raise ValueError("unknown pseudoname %s" % v) 
     1665            elif t == "function": 
    16641666                try: 
    1665                     rule.selectors.append(_function2class[value.rstrip("(")]()) 
     1667                    rule.selectors.append(_function2class[v.rstrip("(")]()) 
    16661668                except KeyError: 
    1667                     raise ValueError("unknown function %s" % value) 
    1668                 rule.function = value 
    1669             elif type == "functionvalue": 
    1670                 rule.selectors[-1].value = value 
    1671             elif type == "attributename": 
    1672                 attributename = value 
    1673             elif type == "attributevalue": 
    1674                 if value.startswith("'") and value.endswith("'"): 
    1675                     value = value[1:-1] 
    1676                 elif value.startswith('"') and value.endswith('"'): 
    1677                     value = value[1:-1] 
    1678                 attributevalue = value 
    1679             elif type == "attribute selector": 
     1669                    raise ValueError("unknown function %s" % v) 
     1670                rule.function = v 
     1671            elif t == "functionvalue": 
     1672                rule.selectors[-1].value = v 
     1673            elif t == "attributename": 
     1674                attributename = v 
     1675            elif t == "attributevalue": 
     1676                if (v.startswith("'") and v.endswith("'")) or (v.startswith('"') and v.endswith('"')): 
     1677                    v = v[1:-1] 
     1678                attributevalue = v 
     1679            elif t == "attribute selector": 
    16801680                combinator = None 
    16811681                inattr = True 
    1682             elif type == "attribute selector end": 
     1682            elif t == "attribute selector end": 
    16831683                if combinator is None: 
    16841684                    rule.selectors.append(CSSHasAttributeSelector(attributename)) 
     
    16891689                        raise ValueError("unknown combinator %s" % attributevalue) 
    16901690                inattr = False 
    1691             elif type == "combinator": 
     1691            elif t == "combinator": 
    16921692                if inattr: 
    1693                     combinator = value 
     1693                    combinator = v 
    16941694                else: 
    16951695                    try: 
    16961696                        rule = CSSTypeSelector() 
    1697                         root = _combinator2class[value](root, rule) 
     1697                        root = _combinator2class[v](root, rule) 
    16981698                    except KeyError: 
    1699                         raise ValueError("unknown combinator %s" % value) 
     1699                        raise ValueError("unknown combinator %s" % v) 
    17001700                    xmlns = "*" 
    17011701        orcombinators.append(root)