home *** CD-ROM | disk | FTP | other *** search
/ Maximum CD 2010 November / maximum-cd-2010-11.iso / DiscContents / calibre-0.7.13.msi / file_1514 (.txt) < prev    next >
Encoding:
Python Compiled Bytecode  |  2010-08-06  |  7.3 KB  |  155 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyc (Python 2.6)
  3.  
  4. __all__ = [
  5.     'CSSNamespaceRule']
  6. __docformat__ = 'restructuredtext'
  7. __version__ = '$Id: cssnamespacerule.py 1638 2009-01-13 20:39:33Z cthedot $'
  8. from cssutils.helper import Deprecated
  9. import cssrule
  10. import cssutils
  11. import xml.dom as xml
  12.  
  13. class CSSNamespaceRule(cssrule.CSSRule):
  14.     
  15.     def __init__(self, namespaceURI = None, prefix = None, cssText = None, parentRule = None, parentStyleSheet = None, readonly = False):
  16.         super(CSSNamespaceRule, self).__init__(parentRule = parentRule, parentStyleSheet = parentStyleSheet)
  17.         self._atkeyword = u'@namespace'
  18.         self._prefix = u''
  19.         self._namespaceURI = None
  20.         if namespaceURI:
  21.             self.namespaceURI = namespaceURI
  22.             self.prefix = prefix
  23.             tempseq = self._tempSeq()
  24.             tempseq.append(self.prefix, 'prefix')
  25.             tempseq.append(self.namespaceURI, 'namespaceURI')
  26.             self._setSeq(tempseq)
  27.         elif cssText is not None:
  28.             self.cssText = cssText
  29.         
  30.         if parentStyleSheet:
  31.             self._parentStyleSheet = parentStyleSheet
  32.         
  33.         self._readonly = readonly
  34.  
  35.     
  36.     def __repr__(self):
  37.         return 'cssutils.css.%s(namespaceURI=%r, prefix=%r)' % (self.__class__.__name__, self.namespaceURI, self.prefix)
  38.  
  39.     
  40.     def __str__(self):
  41.         return '<cssutils.css.%s object namespaceURI=%r prefix=%r at 0x%x>' % (self.__class__.__name__, self.namespaceURI, self.prefix, id(self))
  42.  
  43.     
  44.     def _getCssText(self):
  45.         return cssutils.ser.do_CSSNamespaceRule(self)
  46.  
  47.     
  48.     def _setCssText(self, cssText):
  49.         super(CSSNamespaceRule, self)._setCssText(cssText)
  50.         tokenizer = self._tokenize2(cssText)
  51.         attoken = self._nexttoken(tokenizer, None)
  52.         if self._type(attoken) != self._prods.NAMESPACE_SYM:
  53.             self._log.error(u'CSSNamespaceRule: No CSSNamespaceRule found: %s' % self._valuestr(cssText), error = xml.dom.InvalidModificationErr)
  54.         else:
  55.             new = {
  56.                 'keyword': self._tokenvalue(attoken),
  57.                 'prefix': u'',
  58.                 'uri': None,
  59.                 'wellformed': True }
  60.             
  61.             def _ident(expected, seq, token, tokenizer = (None, None)):
  62.                 if 'prefix or uri' == expected:
  63.                     new['prefix'] = self._tokenvalue(token)
  64.                     seq.append(new['prefix'], 'prefix')
  65.                     return 'uri'
  66.                 new['wellformed'] = False
  67.                 self._log.error(u'CSSNamespaceRule: Unexpected ident.', token)
  68.                 return expected
  69.  
  70.             
  71.             def _string(expected, seq, token, tokenizer = (None, None)):
  72.                 if expected.endswith('uri'):
  73.                     new['uri'] = self._stringtokenvalue(token)
  74.                     seq.append(new['uri'], 'namespaceURI')
  75.                     return ';'
  76.                 new['wellformed'] = False
  77.                 self._log.error(u'CSSNamespaceRule: Unexpected string.', token)
  78.                 return expected
  79.  
  80.             
  81.             def _uri(expected, seq, token, tokenizer = (None, None)):
  82.                 if expected.endswith('uri'):
  83.                     uri = self._uritokenvalue(token)
  84.                     new['uri'] = uri
  85.                     seq.append(new['uri'], 'namespaceURI')
  86.                     return ';'
  87.                 new['wellformed'] = False
  88.                 self._log.error(u'CSSNamespaceRule: Unexpected URI.', token)
  89.                 return expected
  90.  
  91.             
  92.             def _char(expected, seq, token, tokenizer = (None, None)):
  93.                 val = self._tokenvalue(token)
  94.                 if ';' == expected and u';' == val:
  95.                     return 'EOF'
  96.                 new['wellformed'] = False
  97.                 self._log.error(u'CSSNamespaceRule: Unexpected char.', token)
  98.                 return expected
  99.  
  100.             newseq = self._tempSeq()
  101.             (wellformed, expected) = self._parse(expected = 'prefix or uri', seq = newseq, tokenizer = tokenizer, productions = {
  102.                 'IDENT': _ident,
  103.                 'STRING': _string,
  104.                 'URI': _uri,
  105.                 'CHAR': _char }, new = new)
  106.             if wellformed:
  107.                 pass
  108.             wellformed = new['wellformed']
  109.             if new['uri'] is None:
  110.                 wellformed = False
  111.                 self._log.error(u'CSSNamespaceRule: No namespace URI found: %s' % self._valuestr(cssText))
  112.             
  113.             if expected != 'EOF':
  114.                 wellformed = False
  115.                 self._log.error(u'CSSNamespaceRule: No ";" found: %s' % self._valuestr(cssText))
  116.             
  117.             if wellformed:
  118.                 self.atkeyword = new['keyword']
  119.                 self._prefix = new['prefix']
  120.                 self.namespaceURI = new['uri']
  121.                 self._setSeq(newseq)
  122.             
  123.  
  124.     cssText = property(fget = _getCssText, fset = _setCssText, doc = '(DOM) The parsable textual representation of this rule.')
  125.     
  126.     def _setNamespaceURI(self, namespaceURI):
  127.         self._checkReadonly()
  128.         if not self._namespaceURI:
  129.             self._namespaceURI = namespaceURI
  130.             tempseq = self._tempSeq()
  131.             tempseq.append(namespaceURI, 'namespaceURI')
  132.             self._setSeq(tempseq)
  133.         elif self._namespaceURI != namespaceURI:
  134.             self._log.error(u'CSSNamespaceRule: namespaceURI is readonly.', error = xml.dom.NoModificationAllowedErr)
  135.         
  136.  
  137.     namespaceURI = property((lambda self: self._namespaceURI), _setNamespaceURI, doc = 'URI (handled as simple string) of the defined namespace.')
  138.     
  139.     def _setPrefix(self, prefix = None):
  140.         self._checkReadonly()
  141.         for i, x in enumerate(self._seq):
  142.             if x == self._prefix:
  143.                 self._seq[i] = (prefix, 'prefix', None, None)
  144.                 break
  145.                 continue
  146.             None if not prefix else self._type(prefixtoken) != self._prods.IDENT
  147.         else:
  148.             self._seq[0] = (prefix, 'prefix', None, None)
  149.         self._prefix = prefix
  150.  
  151.     prefix = property((lambda self: self._prefix), _setPrefix, doc = 'Prefix used for the defined namespace.')
  152.     type = property((lambda self: self.NAMESPACE_RULE), doc = 'The type of this rule, as defined by a CSSRule type constant.')
  153.     wellformed = property((lambda self: self.namespaceURI is not None))
  154.  
  155.