1 """CSSRule implements DOM Level 2 CSS CSSRule."""
2 __all__ = ['CSSRule']
3 __docformat__ = 'restructuredtext'
4 __version__ = '$Id: cssrule.py 1177 2008-03-20 17:47:23Z cthedot $'
5
6 import xml.dom
7 import cssutils
8
10 """
11 Abstract base interface for any type of CSS statement. This includes
12 both rule sets and at-rules. An implementation is expected to preserve
13 all rules specified in a CSS style sheet, even if the rule is not
14 recognized by the parser. Unrecognized rules are represented using the
15 CSSUnknownRule interface.
16
17 Properties
18 ==========
19 cssText: of type DOMString
20 The parsable textual representation of the rule. This reflects the
21 current state of the rule and not its initial value.
22 parentRule: of type CSSRule, readonly
23 If this rule is contained inside another rule (e.g. a style rule
24 inside an @media block), this is the containing rule. If this rule
25 is not nested inside any other rules, this returns None.
26 parentStyleSheet: of type CSSStyleSheet, readonly
27 The style sheet that contains this rule.
28 type: of type unsigned short, readonly
29 The type of the rule, as defined above. The expectation is that
30 binding-specific casting methods can be used to cast down from an
31 instance of the CSSRule interface to the specific derived interface
32 implied by the type.
33
34 cssutils only
35 -------------
36 seq (READONLY):
37 contains sequence of parts of the rule including comments but
38 excluding @KEYWORD and braces
39 typeString: string
40 A string name of the type of this rule, e.g. 'STYLE_RULE'. Mainly
41 useful for debugging
42 wellformed:
43 if a rule is valid
44 """
45
46 """
47 CSSRule type constants.
48 An integer indicating which type of rule this is.
49 """
50 COMMENT = -1
51 UNKNOWN_RULE = 0
52 STYLE_RULE = 1
53 CHARSET_RULE = 2
54 IMPORT_RULE = 3
55 MEDIA_RULE = 4
56 FONT_FACE_RULE = 5
57 PAGE_RULE = 6
58 NAMESPACE_RULE = 7
59
60 _typestrings = ['UNKNOWN_RULE', 'STYLE_RULE', 'CHARSET_RULE', 'IMPORT_RULE',
61 'MEDIA_RULE', 'FONT_FACE_RULE', 'PAGE_RULE', 'NAMESPACE_RULE',
62 'COMMENT']
63
64 type = UNKNOWN_RULE
65 """
66 The type of this rule, as defined by a CSSRule type constant.
67 Overwritten in derived classes.
68
69 The expectation is that binding-specific casting methods can be used to
70 cast down from an instance of the CSSRule interface to the specific
71 derived interface implied by the type.
72 (Casting not for this Python implementation I guess...)
73 """
74
75 - def __init__(self, parentRule=None, parentStyleSheet=None, readonly=False):
85
86 - def _setCssText(self, cssText):
87 """
88 DOMException on setting
89
90 - SYNTAX_ERR:
91 Raised if the specified CSS string value has a syntax error and
92 is unparsable.
93 - INVALID_MODIFICATION_ERR:
94 Raised if the specified CSS string value represents a different
95 type of rule than the current one.
96 - HIERARCHY_REQUEST_ERR:
97 Raised if the rule cannot be inserted at this point in the
98 style sheet.
99 - NO_MODIFICATION_ALLOWED_ERR: (self)
100 Raised if the rule is readonly.
101 """
102 self._checkReadonly()
103
104 cssText = property(lambda self: u'', _setCssText,
105 doc="""(DOM) The parsable textual representation of the rule. This
106 reflects the current state of the rule and not its initial value.
107 The initial value is saved, but this may be removed in a future
108 version!
109 MUST BE OVERWRITTEN IN SUBCLASS TO WORK!""")
110
120
121 atkeyword = property(lambda self: self._atkeyword, _setAtkeyword,
122 doc=u"@keyword for @rules")
123
124 parentRule = property(lambda self: self._parentRule,
125 doc=u"READONLY")
126
127 parentStyleSheet = property(lambda self: self._parentStyleSheet,
128 doc=u"READONLY")
129
130 wellformed = property(lambda self: False,
131 doc=u"READONLY")
132
133 typeString = property(lambda self: CSSRule._typestrings[self.type],
134 doc="Name of this rules type.")
135