Package cssutils :: Module parse'
[hide private]
[frames] | no frames]

Source Code for Module cssutils.parse'

 1  #!/usr/bin/env python 
 2  """a validating CSSParser 
 3  """ 
 4  __all__ = ['CSSParser'] 
 5  __docformat__ = 'restructuredtext' 
 6  __version__ = '$Id: parse.py 1151 2008-03-18 22:35:53Z cthedot $' 
 7   
 8  import codecs 
 9  import cssutils 
10   
11 -class CSSParser(object):
12 """ 13 parses a CSS StyleSheet string or file and 14 returns a DOM Level 2 CSS StyleSheet object 15 16 Usage:: 17 18 parser = CSSParser() 19 sheet = p.parse('test1.css', 'ascii') 20 21 print sheet.cssText 22 """
23 - def __init__(self, log=None, loglevel=None, raiseExceptions=False):
24 """ 25 log 26 logging object 27 loglevel 28 logging loglevel 29 raiseExceptions 30 if log should simple log (default) or raise errors 31 """ 32 if log is not None: 33 cssutils.log.setlog(log) 34 if loglevel is not None: 35 cssutils.log.setloglevel(loglevel) 36 37 cssutils.log.raiseExceptions = raiseExceptions 38 self.__tokenizer = cssutils.tokenize2.Tokenizer()
39
40 - def parseString(self, cssText, encoding=None, href=None, media=None, 41 title=None):
42 """Return parsed CSSStyleSheet from given string cssText. 43 44 cssText 45 CSS string to parse 46 encoding 47 encoding of the CSS string. if ``None`` the encoding will be read 48 from a @charset rule. If there is none, the parser will fall back 49 to UTF-8. If cssText is a unicode string encoding will be ignored. 50 href 51 The href attribute to assign to the parsed style sheet. 52 Used to resolve other urls in the parsed sheet like @import hrefs 53 media 54 The media attribute to assign to the parsed style sheet 55 (may be a MediaList, list or a string) 56 title 57 The title attribute to assign to the parsed style sheet 58 """ 59 if isinstance(cssText, str): 60 # cssutils always needs unicode strings 61 cssText = codecs.getdecoder('css')(cssText, encoding=encoding)[0] 62 sheet = cssutils.css.CSSStyleSheet() 63 # does close open constructs and adds EOF 64 sheet._href = href 65 sheet.media = cssutils.stylesheets.MediaList(media) 66 sheet.title = title 67 sheet.cssText = self.__tokenizer.tokenize(cssText, fullsheet=True) 68 return sheet
69
70 - def parse(self, filename, encoding=None, href=None, media=None, title=None):
71 """Retrieve and return a CSSStyleSheet from given filename. 72 73 filename 74 of the CSS file to parse 75 encoding 76 of the CSS file, ``None`` defaults to encoding detection from 77 a @charset rule 78 79 for other parameters see ``parseString`` 80 """ 81 return self.parseString(open(filename, 'rb').read(), encoding=encoding, 82 href=href, media=media, title=title)
83
84 - def parseURL(self, url, encoding=None, href=None, media=None, title=None):
85 """Retrieve and return a CSSStyleSheet from given url. 86 87 url 88 url of the CSS file to parse 89 encoding 90 if given overrides detected HTTP encoding 91 92 for other parameters see ``parseString`` 93 """ 94 return self.parseString(cssutils.util._readURL(url, encoding), 95 href=href, media=media, 96 title=title)
97