home *** CD-ROM | disk | FTP | other *** search
- # Source Generated with Decompyle++
- # File: in.pyc (Python 2.6)
-
- __all__ = [
- 'MediaQuery']
- __docformat__ = 'restructuredtext'
- __version__ = '$Id: mediaquery.py 1738 2009-05-02 13:03:28Z cthedot $'
- import cssutils
- import re
- import xml.dom as xml
-
- class MediaQuery(cssutils.util.Base):
- MEDIA_TYPES = [
- u'all',
- u'braille',
- u'embossed',
- u'handheld',
- u'print',
- u'projection',
- u'screen',
- u'speech',
- u'tty',
- u'tv']
- __mediaTypeMatch = re.compile(u'^[-a-zA-Z0-9]+$', re.U).match
-
- def __init__(self, mediaText = None, readonly = False):
- super(MediaQuery, self).__init__()
- self.seq = []
- self._mediaType = u''
- if mediaText:
- self.mediaText = mediaText
-
- self._readonly = readonly
-
-
- def __repr__(self):
- return 'cssutils.stylesheets.%s(mediaText=%r)' % (self.__class__.__name__, self.mediaText)
-
-
- def __str__(self):
- return '<cssutils.stylesheets.%s object mediaText=%r at 0x%x>' % (self.__class__.__name__, self.mediaText, id(self))
-
-
- def _getMediaText(self):
- return cssutils.ser.do_stylesheets_mediaquery(self)
-
-
- def _setMediaText(self, mediaText):
- self._checkReadonly()
- tokenizer = self._tokenize2(mediaText)
- if not tokenizer:
- self._log.error(u'MediaQuery: No MediaText given.')
- else:
- new = {
- 'mediatype': None,
- 'wellformed': True }
-
- def _ident_or_dim(expected, seq, token, tokenizer = (None, None)):
- val = self._tokenvalue(token)
- nval = self._normalize(val)
- if expected.endswith('mediatype'):
- if nval in (u'only', u'not'):
- seq.append(val)
- return 'mediatype'
- new['mediatype'] = val
- seq.append(val)
- return 'and'
- expected.endswith('mediatype')
- if 'and' == nval and expected.startswith('and'):
- seq.append(u'and')
- return 'feature'
- new['wellformed'] = False
- self._log.error(u'MediaQuery: Unexpected syntax.', token = token)
- return expected
-
-
- def _char(expected, seq, token, tokenizer = (None, None)):
- val = self._tokenvalue(token)
- if val == u'(' and expected == 'feature':
- proptokens = self._tokensupto2(tokenizer, funcendonly = True)
- if proptokens and u')' == self._tokenvalue(proptokens[-1]):
- proptokens.pop()
-
- property = cssutils.css.Property(_mediaQuery = True)
- property.cssText = proptokens
- seq.append(property)
- return 'and or EOF'
- new['wellformed'] = False
- self._log.error(u'MediaQuery: Unexpected syntax, expected "and" but found "%s".' % val, token)
- return expected
-
- newseq = []
- (wellformed, expected) = self._parse(expected = 'only|not or mediatype', seq = newseq, tokenizer = tokenizer, productions = {
- 'IDENT': _ident_or_dim,
- 'DIMENSION': _ident_or_dim,
- 'CHAR': _char })
- if wellformed:
- pass
- wellformed = new['wellformed']
- if not new['mediatype']:
- wellformed = False
- self._log.error(u'MediaQuery: No mediatype found: %s' % self._valuestr(mediaText))
-
- if wellformed:
- self.mediaType = new['mediatype']
- self.seq = newseq
-
-
- mediaText = property(_getMediaText, _setMediaText, doc = 'The parsable textual representation of the media list.')
-
- def _setMediaType(self, mediaType):
- self._checkReadonly()
- nmediaType = self._normalize(mediaType)
- if not MediaQuery._MediaQuery__mediaTypeMatch(nmediaType):
- self._log.error(u'MediaQuery: Syntax Error in media type "%s".' % mediaType, error = xml.dom.SyntaxErr)
- elif nmediaType not in MediaQuery.MEDIA_TYPES:
- self._log.warn(u'MediaQuery: Unknown media type "%s".' % mediaType, error = xml.dom.InvalidCharacterErr)
- return None
- self._mediaType = mediaType
- for i, x in enumerate(self.seq):
- if isinstance(x, basestring):
- if self._normalize(x) in (u'only', u'not'):
- continue
- else:
- self.seq[i] = mediaType
- break
- self._normalize(x) in (u'only', u'not')
-
-
- mediaType = property((lambda self: self._mediaType), _setMediaType, doc = 'The media type of this MediaQuery (one of :attr:`MEDIA_TYPES`).')
- wellformed = property((lambda self: bool(len(self.seq))))
-
-