home *** CD-ROM | disk | FTP | other *** search
Wrap
# Source Generated with Decompyle++ # File: in.pyc (Python 2.6) __all__ = [ 'CSSImportRule'] __docformat__ = 'restructuredtext' __version__ = '$Id: cssimportrule.py 1871 2009-10-17 19:57:37Z cthedot $' import cssrule import cssutils import os import urllib import urlparse import xml.dom as xml class CSSImportRule(cssrule.CSSRule): def __init__(self, href = None, mediaText = u'all', name = None, parentRule = None, parentStyleSheet = None, readonly = False): super(CSSImportRule, self).__init__(parentRule = parentRule, parentStyleSheet = parentStyleSheet) self._atkeyword = u'@import' self.hreftype = None self._styleSheet = None self._href = None self.href = href self._media = cssutils.stylesheets.MediaList() if mediaText: self._media.mediaText = mediaText self._name = name seq = self._tempSeq() seq.append(self.href, 'href') seq.append(self.media, 'media') seq.append(self.name, 'name') self._setSeq(seq) self._readonly = readonly def __repr__(self): if self._usemedia: mediaText = self.media.mediaText else: mediaText = None return 'cssutils.css.%s(href=%r, mediaText=%r, name=%r)' % (self.__class__.__name__, self.href, self.media.mediaText, self.name) def __str__(self): if self._usemedia: mediaText = self.media.mediaText else: mediaText = None return '<cssutils.css.%s object href=%r mediaText=%r name=%r at 0x%x>' % (self.__class__.__name__, self.href, mediaText, self.name, id(self)) _usemedia = property((lambda self: self.media.mediaText not in (u'', u'all')), doc = 'if self._media is used (or simply empty)') def _getCssText(self): return cssutils.ser.do_CSSImportRule(self) def _setCssText(self, cssText): super(CSSImportRule, self)._setCssText(cssText) tokenizer = self._tokenize2(cssText) attoken = self._nexttoken(tokenizer, None) if self._type(attoken) != self._prods.IMPORT_SYM: self._log.error(u'CSSImportRule: No CSSImportRule found: %s' % self._valuestr(cssText), error = xml.dom.InvalidModificationErr) else: oldmedia = cssutils.stylesheets.MediaList() oldmedia._absorb(self.media) new = { 'keyword': self._tokenvalue(attoken), 'href': None, 'hreftype': None, 'media': None, 'name': None, 'wellformed': True } def _CSSImportRule__doname(seq, token): new['name'] = self._stringtokenvalue(token) seq.append(new['name'], 'name') return ';' def _string(expected, seq, token, tokenizer = (None, (None, None), None)): if 'href' == expected: new['href'] = self._stringtokenvalue(token) new['hreftype'] = 'string' seq.append(new['href'], 'href') return 'media name ;' if 'name' in expected: return _CSSImportRule__doname(seq, token) new['wellformed'] = False self._log.error(u'CSSImportRule: Unexpected string.', token) return expected def _uri(expected, seq, token, tokenizer = (None, None)): if 'href' == expected: uri = self._uritokenvalue(token) new['hreftype'] = 'uri' new['href'] = uri seq.append(new['href'], 'href') return 'media name ;' new['wellformed'] = False self._log.error(u'CSSImportRule: Unexpected URI.', token) return expected def _ident(expected, seq, token, tokenizer = (None, None, None, None, None)): if expected.startswith('media'): mediatokens = self._tokensupto2(tokenizer, importmediaqueryendonly = True) mediatokens.insert(0, token) last = mediatokens.pop() lastval = self._tokenvalue(last) lasttyp = self._type(last) if lastval != u';' and lasttyp not in ('EOF', self._prods.STRING): new['wellformed'] = False self._log.error(u'CSSImportRule: No ";" found: %s' % self._valuestr(cssText), token = token) self.media.mediaText = mediatokens if self.media.wellformed: new['media'] = self.media seq.append(self.media, 'media') else: self.media._absorb(oldmedia) new['wellformed'] = False self._log.error(u'CSSImportRule: Invalid MediaList: %s' % self._valuestr(cssText), token = token) if lasttyp == self._prods.STRING: return _CSSImportRule__doname(seq, last) return 'EOF' expected.startswith('media') new['wellformed'] = False self._log.error(u'CSSImportRule: Unexpected ident.', token) return expected def _char(expected, seq, token, tokenizer = (None, None)): val = self._tokenvalue(token) if expected.endswith(';') and u';' == val: return 'EOF' new['wellformed'] = False self._log.error(u'CSSImportRule: Unexpected char.', token) return expected newseq = self._tempSeq() (wellformed, expected) = self._parse(expected = 'href', seq = newseq, tokenizer = tokenizer, productions = { 'STRING': _string, 'URI': _uri, 'IDENT': _ident, 'CHAR': _char }, new = new) if wellformed: pass wellformed = new['wellformed'] if not new['href']: wellformed = False self._log.error(u'CSSImportRule: No href found: %s' % self._valuestr(cssText)) if expected != 'EOF': wellformed = False self._log.error(u'CSSImportRule: No ";" found: %s' % self._valuestr(cssText)) if wellformed: self.atkeyword = new['keyword'] self.hreftype = new['hreftype'] if not new['media']: self.media.mediaText = u'all' newseq.append(self.media, 'media') self.name = new['name'] self._setSeq(newseq) self.href = new['href'] if self.styleSheet: self.styleSheet._parentStyleSheet = self.parentStyleSheet cssText = property(fget = _getCssText, fset = _setCssText, doc = '(DOM) The parsable textual representation of this rule.') def _setHref(self, href): for i, item in enumerate(self.seq): val = item.value typ = item.type if 'href' == typ: self._seq[i] = (href, typ, item.line, item.col) break continue else: seq = self._tempSeq() self._setSeq(seq) self._href = href if not self.styleSheet: self._CSSImportRule__setStyleSheet() href = property((lambda self: self._href), _setHref, doc = 'Location of the style sheet to be imported.') media = property((lambda self: self._media), doc = '(DOM readonly) A list of media types for this rule of type :class:`~cssutils.stylesheets.MediaList`.') def _setName(self, name): if isinstance(name, basestring) or name is None: if not name: name = None for i, item in enumerate(self.seq): val = item.value typ = item.type if 'name' == typ: self._seq[i] = (name, typ, item.line, item.col) break continue else: seq = self._tempSeq() for item in self.seq: seq.append(item.value, item.type, item.line, item.col) self._setSeq(seq) self._name = name if self.styleSheet: self.styleSheet.title = name else: self._log.error(u'CSSImportRule: Not a valid name: %s' % name) name = property((lambda self: self._name), _setName, doc = u'An optional name for the imported sheet.') def __setStyleSheet(self): if self.parentStyleSheet and self.href: parentHref = self.parentStyleSheet.href if parentHref is None: parentHref = cssutils.helper.path2url(os.getcwd()) + '/' href = urlparse.urljoin(parentHref, self.href) try: (usedEncoding, enctype, cssText) = self.parentStyleSheet._resolveImport(href) if cssText is None: raise IOError('Cannot read Stylesheet.') cssText is None styleSheet = cssutils.css.CSSStyleSheet(href = href, media = self.media, ownerRule = self, title = self.name) styleSheet._setFetcher(self.parentStyleSheet._fetcher) (encodingOverride, encoding) = (None, None) if enctype == 0: encodingOverride = usedEncoding elif enctype > enctype: pass elif enctype > 0: encoding = usedEncoding styleSheet._setCssTextWithEncodingOverride(cssText, encodingOverride = encodingOverride, encoding = encoding) except (OSError, IOError, ValueError): e = None self._log.warn(u'CSSImportRule: While processing imported style sheet href=%r: %r' % (self.href, e), neverraise = True) self._styleSheet = styleSheet styleSheet = property((lambda self: self._styleSheet), doc = '(readonly) The style sheet referred to by this rule.') type = property((lambda self: self.IMPORT_RULE), doc = 'The type of this rule, as defined by a CSSRule type constant.') def _getWellformed(self): if self._usemedia: if self.href: pass return bool(self.media.wellformed) return bool(self.href) wellformed = property(_getWellformed)