File Coverage

blib/lib/CSS/DOM/Interface.pm
Criterion Covered Total %
statement 3 3 100.0
branch n/a
condition n/a
subroutine 1 1 100.0
pod n/a
total 4 4 100.0


line stmt bran cond sub pod time code
1             package CSS::DOM::Interface;
2              
3 1     1   21206 use Exporter 5.57 'import';
  1         20  
  1         1152  
4             our $VERSION = '0.16';
5              
6             require CSS::DOM::Constants;
7              
8             =head1 NAME
9              
10             CSS::DOM::Interface - A list of CSS::DOM's interface members in machine-readable format
11              
12             =head1 VERSION
13              
14             Version 0.16
15              
16             =head1 SYNOPSIS
17              
18             use CSS::DOM::Interface ':all';
19              
20             # name of DOM interface (CSSStyleRule):
21             $CSS::DOM::Interface{"CSS::DOM::Rule::Style"};
22            
23             # interface it inherits from (CSSRule):
24             $CSS::DOM::Interface{CSSStyleRule}{_isa};
25            
26             # whether this can be used as an array
27             $CSS::DOM::Interface{MediaList}{_array}; # true
28             # or hash
29             $CSS::DOM::Interface{MediaList}{_hash}; # false
30            
31            
32             # Properties and Methods
33            
34             # list them all
35             grep !/^_/, keys %{ $CSS::DOM::Interface{CSSStyleSheet} };
36            
37             # see whether a given property is supported
38             exists $CSS::DOM::Interface{CSSStyleSheet}{foo}; # false
39            
40             # Is it a method?
41             $CSS::DOM::Interface{CSSStyleSheet}{cssRules} & METHOD; # false
42             $CSS::DOM::Interface{CSSStyleSheet}{insertRule} & METHOD; # true
43            
44             # Does the method return nothing?
45             $CSS::DOM::Interface{MediaList}{deleteMedium} & VOID; # true
46            
47             # Is a property read-only?
48             $CSS::DOM::Interface{StyleSheetList}{length} & READONLY; # true
49            
50             # Data types of properties
51             ($CSS::DOM::Interface{CSSStyleSheet}{type} & TYPE)
52             == STR; # true
53             ($CSS::DOM::Interface{CSSStyleSheet}{disabled} & TYPE)
54             == BOOL; # true
55             ($CSS::DOM::Interface{CSSStyleSheet}{ownerNode} & TYPE)
56             == NUM; # false
57             ($CSS::DOM::Interface{CSSStyleSheet}{href} & TYPE)
58             == OBJ; # false
59            
60             # and return types of methods:
61             ($CSS::DOM::Interface{MediaList}{item} & TYPE) == STR; # true
62             ($CSS::DOM::Interface{CSSMediaRule}
63             ->{insertRule} & TYPE) == BOOL; # false
64             ($CSS::DOM::Interface{CSSStyleDeclaration}
65             ->{getPropertyVaue} & TYPE) == NUM; # false
66             ($CSS::DOM::Interface{CSSStyleDeclaration}
67             ->{removeProperty} & TYPE) == OBJ; # false
68            
69            
70             # Constants
71              
72             # list of constant names in the form "CSS::DOM::Node::STYLE_RULE";
73             @{ $CSS::DOM::Interface{CSSRule}{_constants} };
74              
75             =head1 DESCRIPTION
76              
77             The synopsis should tell you almost everything you need to know. But be
78             warned that C<$foo & TYPE> is meaningless when C<$foo & METHOD> and
79             C<$foo & VOID> are both true. For more
80             gory details, look at the source code. In fact, here it is:
81              
82             =cut
83              
84             0 and q r
85              
86             =for ;
87              
88             our @EXPORT_OK = qw/METHOD VOID READONLY BOOL STR NUM OBJ TYPE/;
89             our %EXPORT_TAGS = (all => \@EXPORT_OK);
90              
91             sub METHOD () { 1 }
92             sub VOID () { 0b10 } # for methods
93             sub READONLY () { 0b10 } # for properties
94             sub BOOL () { 0b0000 }
95             sub STR () { 0b0100 }
96             sub NUM () { 0b1000 }
97             sub OBJ () { 0b1100 }
98             sub TYPE () { 0b1100 } # only for use as a mask
99              
100             %CSS::DOM::Interface = (
101             'CSS::DOM' => 'CSSStyleSheet',
102             'CSS::DOM::StyleSheetList' => 'StyleSheetList',
103             'CSS::DOM::MediaList' => 'MediaList',
104             'CSS::DOM::RuleList' => 'CSSRuleList',
105             'CSS::DOM::Rule' => 'CSSRule',
106             'CSS::DOM::Rule::Style' => 'CSSStyleRule',
107             'CSS::DOM::Rule::Media' => 'CSSMediaRule',
108             'CSS::DOM::Rule::FontFace' => 'CSSFontFaceRule',
109             'CSS::DOM::Rule::Page' => 'CSSPageRule',
110             'CSS::DOM::Rule::Import' => 'CSSImportRule',
111             'CSS::DOM::Rule::Charset' => 'CSSCharsetRule',
112             'CSS::DOM::Style' => 'CSSStyleDeclaration',
113             'CSS::DOM::Value' => 'CSSValue',
114             'CSS::DOM::Value::Primitive' => 'CSSPrimitiveValue',
115             'CSS::DOM::Value::List' => 'CSSValueList',
116             'CSS::DOM::Counter' => 'Counter',
117             StyleSheetList => {
118             _hash => 0,
119             _array => 1,
120             length => NUM | READONLY,
121             item => METHOD | OBJ,
122             },
123             MediaList => {
124             _hash => 0,
125             _array => 1,
126             mediaText => STR,
127             length => NUM | READONLY,
128             item => METHOD | STR,
129             deleteMedium => METHOD | VOID,
130             appendMedium => METHOD | VOID,
131             },
132             CSSRuleList => {
133             _hash => 0,
134             _array => 1,
135             length => NUM | READONLY,
136             item => METHOD | OBJ,
137             },
138             CSSRule => {
139             _hash => 0,
140             _array => 0,
141             _constants => [qw[
142             CSS::DOM::Rule::UNKNOWN_RULE
143             CSS::DOM::Rule::STYLE_RULE
144             CSS::DOM::Rule::CHARSET_RULE
145             CSS::DOM::Rule::IMPORT_RULE
146             CSS::DOM::Rule::MEDIA_RULE
147             CSS::DOM::Rule::FONT_FACE_RULE
148             CSS::DOM::Rule::PAGE_RULE
149             ]],
150             type => NUM | READONLY,
151             cssText => STR,
152             parentStyleSheet => OBJ | READONLY,
153             parentRule => OBJ | READONLY,
154             },
155             CSSStyleRule => {
156             _isa => 'CSSRule',
157             _hash => 0,
158             _array => 0,
159             selectorText => STR,
160             style => OBJ | READONLY,
161             },
162             CSSMediaRule => {
163             _isa => 'CSSRule',
164             _hash => 0,
165             _array => 0,
166             media => OBJ | READONLY,
167             cssRules => OBJ | READONLY,
168             insertRule => METHOD | NUM,
169             deleteRule => METHOD | VOID,
170             },
171             CSSFontFaceRule => {
172             _isa => 'CSSRule',
173             _hash => 0,
174             _array => 0,
175             style => OBJ | READONLY,
176             },
177             CSSPageRule => {
178             _isa => 'CSSRule',
179             _hash => 0,
180             _array => 0,
181             selectorText => STR,
182             style => OBJ | READONLY,
183             },
184             CSSImportRule => {
185             _isa => 'CSSRule',
186             _hash => 0,
187             _array => 0,
188             href => STR | READONLY,
189             media => OBJ | READONLY,
190             styleSheet => OBJ | READONLY,
191             },
192             CSSCharsetRule => {
193             _isa => 'CSSRule',
194             _hash => 0,
195             _array => 0,
196             encoding => STR,
197             },
198             CSSStyleDeclaration => {
199             _hash => 0,
200             _array => 1,
201             cssText => STR,
202             getPropertyValue => METHOD | STR,
203             getPropertyCSSValue => METHOD | OBJ,
204             removeProperty => METHOD | STR,
205             getPropertyPriority => METHOD | STR,
206             setProperty => METHOD | VOID,
207             length => NUM | READONLY,
208             item => METHOD | STR,
209             parentRule => OBJ | READONLY,
210             azimuth => STR,
211             background => STR,
212             backgroundAttachment => STR,
213             backgroundColor => STR,
214             backgroundImage => STR,
215             backgroundPosition => STR,
216             backgroundRepeat => STR,
217             border => STR,
218             borderCollapse => STR,
219             borderColor => STR,
220             borderSpacing => STR,
221             borderStyle => STR,
222             borderTop => STR,
223             borderRight => STR,
224             borderBottom => STR,
225             borderLeft => STR,
226             borderTopColor => STR,
227             borderRightColor => STR,
228             borderBottomColor => STR,
229             borderLeftColor => STR,
230             borderTopStyle => STR,
231             borderRightStyle => STR,
232             borderBottomStyle => STR,
233             borderLeftStyle => STR,
234             borderTopWidth => STR,
235             borderRightWidth => STR,
236             borderBottomWidth => STR,
237             borderLeftWidth => STR,
238             borderWidth => STR,
239             bottom => STR,
240             captionSide => STR,
241             clear => STR,
242             clip => STR,
243             color => STR,
244             content => STR,
245             counterIncrement => STR,
246             counterReset => STR,
247             cue => STR,
248             cueAfter => STR,
249             cueBefore => STR,
250             cursor => STR,
251             direction => STR,
252             display => STR,
253             elevation => STR,
254             emptyCells => STR,
255             cssFloat => STR,
256             font => STR,
257             fontFamily => STR,
258             fontSize => STR,
259             fontSizeAdjust => STR,
260             fontStretch => STR,
261             fontStyle => STR,
262             fontVariant => STR,
263             fontWeight => STR,
264             height => STR,
265             left => STR,
266             letterSpacing => STR,
267             lineHeight => STR,
268             listStyle => STR,
269             listStyleImage => STR,
270             listStylePosition => STR,
271             listStyleType => STR,
272             margin => STR,
273             marginTop => STR,
274             marginRight => STR,
275             marginBottom => STR,
276             marginLeft => STR,
277             markerOffset => STR,
278             marks => STR,
279             maxHeight => STR,
280             maxWidth => STR,
281             minHeight => STR,
282             minWidth => STR,
283             opacity => STR,
284             orphans => STR,
285             outline => STR,
286             outlineColor => STR,
287             outlineStyle => STR,
288             outlineWidth => STR,
289             overflow => STR,
290             padding => STR,
291             paddingTop => STR,
292             paddingRight => STR,
293             paddingBottom => STR,
294             paddingLeft => STR,
295             page => STR,
296             pageBreakAfter => STR,
297             pageBreakBefore => STR,
298             pageBreakInside => STR,
299             pause => STR,
300             pauseAfter => STR,
301             pauseBefore => STR,
302             pitch => STR,
303             pitchRange => STR,
304             playDuring => STR,
305             position => STR,
306             quotes => STR,
307             richness => STR,
308             right => STR,
309             size => STR,
310             speak => STR,
311             speakHeader => STR,
312             speakNumeral => STR,
313             speakPunctuation => STR,
314             speechRate => STR,
315             stress => STR,
316             tableLayout => STR,
317             textAlign => STR,
318             textDecoration => STR,
319             textIndent => STR,
320             textShadow => STR,
321             textTransform => STR,
322             top => STR,
323             unicodeBidi => STR,
324             verticalAlign => STR,
325             visibility => STR,
326             voiceFamily => STR,
327             volume => STR,
328             whiteSpace => STR,
329             widows => STR,
330             width => STR,
331             wordSpacing => STR,
332             zIndex => STR,
333             },
334             CSSValue => {
335             _hash => 0,
336             _array => 0,
337             _constants => [qw[
338             CSS::DOM::Value::CSS_INHERIT
339             CSS::DOM::Value::CSS_PRIMITIVE_VALUE
340             CSS::DOM::Value::CSS_VALUE_LIST
341             CSS::DOM::Value::CSS_CUSTOM
342             ]],
343             cssText => STR,
344             cssValueType => NUM | READONLY,
345             },
346             CSSPrimitiveValue => {
347             _isa => 'CSSValue',
348             _hash => 0,
349             _array => 0,
350             _constants => [qw[
351             CSS::DOM::Value::Primitive::CSS_UNKNOWN
352             CSS::DOM::Value::Primitive::CSS_NUMBER
353             CSS::DOM::Value::Primitive::CSS_PERCENTAGE
354             CSS::DOM::Value::Primitive::CSS_EMS
355             CSS::DOM::Value::Primitive::CSS_EXS
356             CSS::DOM::Value::Primitive::CSS_PX
357             CSS::DOM::Value::Primitive::CSS_CM
358             CSS::DOM::Value::Primitive::CSS_MM
359             CSS::DOM::Value::Primitive::CSS_IN
360             CSS::DOM::Value::Primitive::CSS_PT
361             CSS::DOM::Value::Primitive::CSS_PC
362             CSS::DOM::Value::Primitive::CSS_DEG
363             CSS::DOM::Value::Primitive::CSS_RAD
364             CSS::DOM::Value::Primitive::CSS_GRAD
365             CSS::DOM::Value::Primitive::CSS_MS
366             CSS::DOM::Value::Primitive::CSS_S
367             CSS::DOM::Value::Primitive::CSS_HZ
368             CSS::DOM::Value::Primitive::CSS_KHZ
369             CSS::DOM::Value::Primitive::CSS_DIMENSION
370             CSS::DOM::Value::Primitive::CSS_STRING
371             CSS::DOM::Value::Primitive::CSS_URI
372             CSS::DOM::Value::Primitive::CSS_IDENT
373             CSS::DOM::Value::Primitive::CSS_ATTR
374             CSS::DOM::Value::Primitive::CSS_COUNTER
375             CSS::DOM::Value::Primitive::CSS_RECT
376             CSS::DOM::Value::Primitive::CSS_RGBCOLOR
377             ]],
378             primitiveType => NUM | READONLY,
379             setFloatValue => METHOD | VOID,
380             getFloatValue => METHOD | NUM,
381             setStringValue => METHOD | VOID,
382             getStringValue => METHOD | STR,
383             # getCounterValue => METHOD | OBJ,
384             # getRectValue => METHOD | OBJ,
385             # getRGBColorValue => METHOD | OBJ,
386             red => OBJ | READONLY,
387             green => OBJ | READONLY,
388             blue => OBJ | READONLY,
389             alpha => OBJ | READONLY,
390             top => OBJ | READONLY,
391             right => OBJ | READONLY,
392             bottom => OBJ | READONLY,
393             left => OBJ | READONLY,
394             },
395             CSSValueList => {
396             _isa => 'CSSValue',
397             _hash => 0,
398             _array => 1,
399             length => NUM | READONLY,
400             item => METHOD | OBJ,
401             },
402             # Counter => {
403             # _hash => 0,
404             # _array => 0,
405             # identifier => STR | READONLY,
406             # listStyle => STR | READONLY,
407             # separator => STR | READONLY,
408             # },
409             CSSStyleSheet => {
410             type => STR | READONLY,
411             _hash => 0,
412             _array => 0,
413             disabled => BOOL,
414             ownerNode => OBJ | READONLY,
415             parentStyleSheet => OBJ | READONLY,
416             href => STR | READONLY,
417             title => STR | READONLY,
418             media => OBJ | READONLY,
419             ownerRule => OBJ | READONLY,
420             cssRules => OBJ | READONLY,
421             insertRule => METHOD | NUM,
422             deleteRule => METHOD | VOID,
423             },
424             );
425              
426             __END__