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