ANN: cssutils 0.9.3a1

Christof Hoeke cthedot at gmail.com
Wed Sep 5 13:47:40 CEST 2007


what is it
----------
A CSS Cascading Style Sheets library for Python.

Partly implements the DOM Level 2 Style Stylesheets and CSS interfaces. 
An implementation of the WD CSS Module: Namespaces which has no official 
DOM yet is included since v0.9.1.

changes since 0.9.2b4
---------------------
for full details see the relevant README file 
http://cssutils.googlecode.com/svn/tags/TAG_0.9.3a1/README.txt

Lots of thanks to Walter Dörwald who had quite an influence on this 
release (thinking, helping, coding).

from the README:
     - FEATURE: Implemented css.CSSValue, css.CSSPrimitiveValue and 
css.CSSValueList.

         Not yet implemented are:
             - css.CSSPrimitiveValue.getCounterValue and css. Counter
             - css.CSSPrimitiveValue.getRGBColorValue and css.RGBColor
             - css.CSSPrimitiveValue.getRectValue and css.Rect

         + FEATURE: css.CSSValueList is iterable so may be used in a for 
loop
         + FEATURE: CSSValue has property ``cssValueTypeString`` which 
is the name of the relevant ``cssValueType``, e.g. "CSS_PRIMITIVE_TYPE". 
Mainly useful for debugging.
         + FEATURE: CSSPrimitiveValue has property 
``primitiveTypeString`` which is the name of the relevant 
``primitiveType``, e.g. "CSS_PX". Mainly useful for debugging.
         + CSSValue has an init Parameter ``_propertyname`` to set a 
context property for validation. If none is set the value is always 
invalid. **THIS MAY CHANGE!**

     - FEATURE (**experimental**): CSSStyleDeclaration is iterable now. 
The iterator returns *all* properties set in this style as objects with 
properties ``name``, ``cssValue`` and ``priority``. Calling 
CSSStyleDeclaration.item(index) on the other hand simply returns a 
property name and also only the normalized name (once). Example::

             sheet = cssutils.parseString('a { color: red; c\olor: blue; 
left: 0 !important }')
             for rule in sheet.cssRules:
                 style = rule.style
                 for property in style:
                     name = property.name
                     cssValue = property.cssValue
                     priority = property.priority
                     print name, '=', cssValue.cssText, priority

                 # prints:
                 # color = red
                 # c\olor = blue
                 # left = 0 !important

                 for i in range(0, style.length):
                     name = style.item(i)
                     cssValue = style.getPropertyCSSValue(name)
                     priority = style.getPropertyPriority(name)
                     print name, '=', cssValue.cssText , priority

                 # prints:
                 # color = blue
                 # left = 0 !important

     - FEATURE (**experimental**): added 
``CSSStyleSheet.replaceUrls(replacer)`` which may be used to adjust all 
"url()" values in a style sheet (currently in CSSStyleDeclaration and 
CSSImportRules).

     - FEATURE: added ``CSSStyleDeclaration.getCssText(separator=None)`` 
which returns serialized property cssText, each property separated by 
given ``separator`` which may e.g. be u'' to be able to use cssText 
directly in an HTML style attribute. ";" is always part of each property 
(except the last one) and can **not** be set with separator!

     - FEATURE: ``href`` and ``media`` arguments can now be passed to 
``parse()`` and ``parseString()`` functions and methods. This sets the 
appropriate attributes on the generated stylesheet objects.

     - FEATURE: CSSMediaRule has an init parameter ``mediaText`` 
synchronous to CSSImportRule now

     - FEATURE: The ``MediaList`` constructor can now be passed a list 
of media types.

     - FEATURE: ``CSSRule`` and subclasses have a property 
``typeString`` which is the name of the relevant ``type``, e.g. 
``STYLE_RULE``. Mainly useful for debugging.

     - FEATURE: ``cssutils.serialize.Preferences`` has a new option 
``lineSeparator`` that is used as linefeed character(s). May also be set 
to ``u''`` for ``CSSStyleDeclareation.cssText'`` to be directly usable 
in e.g. HTML style attributes

     + API CHANGE (internal): renamed serializers method 
``do_stylesheet`` to ``do_CSSStyleSheet``

     - BUGFIX (issue #9): Parsing of empty ``url()`` values has been fixed
     - BUGFIX: Handling of linenumbers in the serializer has been fixed.
     - BUGFIX (minor): removed debug output in CSSStyleDeclaration

     + CHANGE (experimental!): CSSStyleDeclaration.getPropertyCSSValue() 
for shorthand properties like e.g. ``background`` should return None. 
cssutils returns a CSSValueList in these cases now. Use with care as 
this may change later

     + CHANGE: CSSValue default cssText is now ``u""`` and not 
``u"inherit"`` anymore

     + CHANGE: ``css.CSSStyleDeclaration.cssText`` indents its property 
not anymore.

     + CHANGE: ``cssutils.serialize.CSSSerializer`` has been refactored 
internally to support the lineSeparator option.

     + CHANGE: The Selector and SameNamePropertyList (which might be 
renamed as it is experimental) class are now available from cssutils.css 
too.

     + CHANGE: Tokenizer strips HTML comment tokens CDO and CDC from 
tokenlist now.

     + CHANGE: Added __repr__ and __str__ methods to most classes. 
__str__ reports e.g. ``<cssutils.css.CSSImportRule object href=None at 
0xaaa870>``, __repr__  e.g. ``cssutils.css.CSSImportRule(href=None, 
mediaText=u'all')`` which is a valid contructor  for the object in most 
cases (which might not be complete for all init parameter for all 
classes like in this case though). The following details are included:

       css
         - CSSStyleSheet shows the title and href
         - CSSCharsetRule shows the encoding
         - CSSCharsetRule shows the cssText (not in __str__ though)
         - CSSImportRule shows the href and the MediaList mediaText
         - CSSMediaRule shows the MediaList mediaText
         - CSSNameSpaceRule shows the prefix and uri
         - CSSPageRule shows the selectorText
         - CSSStyleRule shows the selectorText
         - CSSUnknownRule shows nothing special
         - CSSStyleDeclaration shows the number of properties set for 
__str__ but an empty CSSStyleDeclaration constructor for __repr__ as 
showing cssText might be way too much
         - SameNamePropertyList shows the name
         - CSSValue, CSSPrimitiveValue show the actual value for 
__repr__, some details for __str__
         - CSSValueList shows an __repr__ which is **not** possible to 
``eval()`` and some details for __str__
         - _Property shows infos but should be used directly for now anyway!
         - Selector the selectorText

       stylesheets
         - MediaList shows the mediaText

license
-------
cssutils is published under the LGPL.

download
--------
for download options for cssutils 0.9.3a1 - 070905 see 
http://cthedot.de/cssutils/

cssutils needs
* Python 2.4 or higher (tested with Python 2.5 on Windows XP only)


bug reports, comments, etc are very much appreciated, (please use 
http://code.google.com/p/cssutils/).

thanks
christof


More information about the Python-announce-list mailing list