===========
Serializing
===========
:author: $LastChangedBy: cthedot $
:date: $LastChangedDate: 2007-08-08 16:14:03 +0200 (Mi, 08 Aug 2007) $
:version: $LastChangedRevision: 206 $

`Index <../index.txt>`_

.. contents::


Serializer
==========
A custom serializer must implement all methods the default one implements. Easiest would be to subclass ``cssutils.serialize.Serializer``.

To set a new serializer, use::

    sheet = CSSStyleSheet()
    sheet.setSerializer(newser)

You may also set ``cssutils.ser`` directly but the above method is the preferred one.


Serializer Preferences
======================
Quite a few preferences of the cssutils serializer may be tweaked.

To set a preference use::

    sheet = CSSStyleSheet()
    sheet.setSerializerPref(pref, value)

You may also set ``cssutils.ser.prefs.pref`` directly but the above method is the preferred one.

Preferences are always used *globally*, so for all stylesheets until preferences are set again.

The following preferences are currently available

defaultAtKeyword = True
    Should the literal @keyword from src CSS be used or the default
    form, e.g. if ``True``: ``@import`` else: ``@i\mport``
defaultPropertyName = True
    Should the normalized propertyname be used or the one given in
    the src file, e.g. if ``True``: ``color`` else: ``c\olor``

    Only used if ``keepAllProperties==False``.

importHrefFormat = None
    Uses hreftype if ``None`` or explicit ``'string'`` or ``'uri'``
indent = 4 * ' '
    Indentation of e.g Properties inside a CSSStyleDeclaration
keepAllProperties = True
    If ``True`` all properties set in the original CSSStylesheet
    are kept meaning even properties set twice with the exact same
    same name are kept!
keepComments = True
    If ``False`` removes all CSSComments
keepEmptyRules = False
    defines if empty rules like e.g. ``a {}`` are kept in the resulting
    serialized sheet
lineNumbers = False
    Only used if a complete CSSStyleSheet is serialized.
lineSeparator = u'\\n'
    How to end a line. This may be set to e.g. u'' for serializing of
    CSSStyleDeclarations usable in HTML style attribute.
listItemSpacer = u' '
    string which is used in ``css.SelectorList``, ``css.CSSValue`` and
    ``stylesheets.MediaList`` after the comma
omitLastSemicolon = True
    If ``True`` omits ; after last property of CSSStyleDeclaration
paranthesisSpacer = u' '
    string which is used before an opening paranthesis like in a
    ``css.CSSMediaRule`` or ``css.CSSStyleRule``
propertyNameSpacer = u' '
    string which is used after a Property name colon

validOnly = False (**not anywhere used yet**)
    if True only valid (Properties or Rules) are kept

    A Property is valid if it is a known Property with a valid value.
    Currently CSS 2.1 values as defined in cssproperties.py would be
    valid.

wellformedOnly = True (**not anywhere used yet**)
    only wellformed properties and rules are kept

**DEPRECATED**: removeInvalid = True
    Omits invalid rules, replaced by ``validOnly`` which will be used
    more cases
