Package cssutils :: Package css :: Module cssunknownrule |
[hide private]
[frames] | no frames]

# Source Code for Module cssutils.css.cssunknownrule

      1  """CSSUnknownRule implements DOM Level 2 CSS CSSUnknownRule.
      2  """
      3  __all__ = ['CSSUnknownRule']
      4  __docformat__ = 'restructuredtext'
      5  __author__ = '$LastChangedBy: cthedot $'
      6  __date__ = '$LastChangedDate: 2007-10-19 00:31:34 +0200 (Fr, 19 Okt 2007) $'
      7  __version__ = '$LastChangedRevision: 518 $'
      8
      9  import xml.dom
     10  import cssrule
     11  import cssutils
     12
     13 -class CSSUnknownRule(cssrule.CSSRule):
     14      """
     15      represents an at-rule not supported by this user agent.
     16
     17      Properties
     18      ==========
     19      inherited from CSSRule
     20          - cssText
     21          - type
     22
     23      cssutils only
     24      -------------
     25      atkeyword:
     26          the literal keyword used
     27      seq: a list (cssutils)
     28          All parts of this rule excluding @KEYWORD but including CSSComments
     29
     30      Format
     31      ======
     32      unknownrule:
     33          @xxx until ';' or block {...}
     34      """
     35      type = cssrule.CSSRule.UNKNOWN_RULE
     36
     37 -    def __init__(self, cssText=u'', readonly=False):
     38          """
     39          cssText
     40              of type string
     41          """
     42          super(CSSUnknownRule, self).__init__()
     43
     44          self.valid = True # always as unknown...
     45          if cssText:
     46              self.cssText = cssText
     47          else:
     48              self.atkeyword = None
     49
     50          self._readonly = readonly
     51
     52
     53 -    def _getCssText(self):
     54          """ returns serialized property cssText """
     55          return cssutils.ser.do_CSSUnknownRule(self)
     56
     57 -    def _setCssText(self, cssText):
     58          """
     59          DOMException on setting
     60
     61          - SYNTAX_ERR:
     62            Raised if the specified CSS string value has a syntax error and
     63            is unparsable.
     64          - INVALID_MODIFICATION_ERR:
     65            Raised if the specified CSS string value represents a different
     66            type of rule than the current one.
     67          - HIERARCHY_REQUEST_ERR: (never raised)
     68            Raised if the rule cannot be inserted at this point in the
     69            style sheet.
     70          - NO_MODIFICATION_ALLOWED_ERR: (CSSRule)
     71            Raised if the rule is readonly.
     72          """
     73          super(CSSUnknownRule, self)._setCssText(cssText)
     74          tokenizer = self._tokenize2(cssText)
     75          attoken = self._nexttoken(tokenizer, None)
     76          if not attoken or 'ATKEYWORD' != self._type(attoken):
     77              self._log.error(u'CSSUnknownRule: No CSSUnknownRule found.',
     78                              error=xml.dom.InvalidModificationErr)
     79          else:
     80              newatkeyword = self._tokenvalue(attoken)
     81              newseq = []
     82              for token in tokenizer:
     83                  if 'INVALID' == self._type(token):
     84                      return
     85                  newseq.append(self._tokenvalue(token))
     86
     87              self.atkeyword = newatkeyword
     88              self.seq = newseq
     89
     90      cssText = property(fget=_getCssText, fset=_setCssText,
     91          doc="(DOM) The parsable textual representation.")
     92
     93 -    def __repr__(self):
     94          return "cssutils.css.%s(cssText=%r)" % (
     95                  self.__class__.__name__, self.cssText)
     96
     97 -    def __str__(self):
     98          return "<cssutils.css.%s object cssText=%r at 0x%x>" % (
     99                  self.__class__.__name__, self.cssText, id(self))
    100