1
- <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd" >
2
- < html >
1
+ <!doctype html >
2
+ < html lang =" en " >
3
3
< head >
4
- < title > CSS Parser Demo</ title >
5
- <!--<script type="text/javascript" src="../../dist/parserlib.js"></script>-->
6
- < script type ="text/javascript " src ="../../dist/parserlib-core.js "> </ script >
7
- < script type ="text/javascript " src ="../../dist/parserlib-css.js "> </ script >
8
- < style type ="text/css ">
9
- .error { color : red; }
10
- </ style >
4
+ < meta charset ="utf-8 ">
5
+ < title > CSS Parser Demo</ title >
6
+ <!--<script src="../../dist/parserlib.js"></script>-->
7
+ < script src ="../../dist/parserlib-core.js "> </ script >
8
+ < script src ="../../dist/parserlib-css.js "> </ script >
9
+ < style >
10
+ .error { color : red; }
11
+ </ style >
11
12
</ head >
12
13
< body >
13
- < h1 > CSS Parser Demo</ h1 >
14
- < textarea rows ="10 " cols ="40 " id ="input ">
15
- @charset "UTF-8";
14
+ < h1 > CSS Parser Demo</ h1 >
15
+ < textarea rows ="10 " cols ="40 " id ="input ">
16
+ @charset "UTF-8";
16
17
17
18
@import url("booya.css") print,screen;
18
19
@import "whatup.css" screen;
@@ -22,7 +23,6 @@ <h1>CSS Parser Demo</h1>
22
23
@namespace svg "http://www.w3.org/2000/svg";
23
24
24
25
@keyframes 'diagonal-slide' {
25
-
26
26
from {
27
27
left: 0;
28
28
top: 0;
@@ -35,188 +35,195 @@ <h1>CSS Parser Demo</h1>
35
35
}
36
36
37
37
li.inline {
38
- background: url("something.png");
39
- display: inline;
40
- padding-left: 3px;
41
- padding-right: 7px;
42
- border-right: 1px dotted #066;
38
+ background: url("something.png");
39
+ display: inline;
40
+ padding-left: 3px;
41
+ padding-right: 7px;
42
+ border-right: 1px dotted #066;
43
43
}
44
44
45
45
li.last {
46
- display: inline;
47
- padding-left: 3px !important;
48
- padding-right: 3px;
49
- border-right: 0px ;
50
- }
46
+ display: inline;
47
+ padding-left: 3px !important;
48
+ padding-right: 3px;
49
+ border-right: 0 ;
50
+ }
51
51
52
52
@media print {
53
53
li.inline {
54
- color: black;
54
+ color: black;
55
55
}
56
56
}
57
57
58
58
@page {
59
- margin: 10%;
60
- counter-increment: page;
61
-
62
- @top-center {
63
- font-family: sans-serif;
64
- font-weight: bold;
65
- font-size: 2em;
66
- content: counter(page);
67
- }
59
+ margin: 10%;
60
+ counter-increment: page;
61
+
62
+ @top-center {
63
+ font-family: sans-serif;
64
+ font-weight: bold;
65
+ font-size: 2em;
66
+ content: counter(page);
67
+ }
68
68
}
69
- </ textarea >
70
- < p > < input type ="checkbox " id ="starHack " /> < label for ="starHack "> Accept star hack</ label > < input type ="checkbox " id ="ieFilters " /> < label for ="ieFilters "> Accept IE filters</ label > < input type ="checkbox " id ="strictMode " /> < label for ="strictMode "> Strict mode</ label > </ p >
71
- < input type ="button " onclick ="parse() " value ="parse ">
72
- < p > (You may want to keep the CSS kinda small, this could take a while.)</ p >
73
- < div id ="output ">
74
-
75
- </ div >
76
- < script type ="text/javascript ">
77
-
78
- function parse ( ) {
79
- document . getElementById ( "output" ) . innerHTML = "" ;
80
- var parser = new parserlib . css . Parser ( { starHack : document . getElementById ( "starHack" ) . checked ,
81
- ieFilters : document . getElementById ( "ieFilters" ) . checked ,
82
- strict : document . getElementById ( "strictMode" ) . checked } ) ;
83
- parser . addListener ( "startstylesheet" , function ( ) {
84
- log ( "Starting style sheet" ) ;
85
- } ) ;
86
-
87
- parser . addListener ( "endstylesheet" , function ( ) {
88
- log ( "Ending style sheet" ) ;
89
- } ) ;
90
-
91
- parser . addListener ( "charset" , function ( event ) {
92
- log ( "Charset is " + event . charset ) ;
93
- } ) ;
94
-
95
- parser . addListener ( "namespace" , function ( event ) {
96
- log ( "Namespace with prefix=" + event . prefix + " and URI=" + event . uri ) ;
97
- } ) ;
98
-
99
- parser . addListener ( "startfontface" , function ( event ) {
100
- log ( "Starting font face" ) ;
101
- } ) ;
102
-
103
- parser . addListener ( "endfontface" , function ( event ) {
104
- log ( "Ending font face" ) ;
105
- } ) ;
106
-
107
- parser . addListener ( "startkeyframes" , function ( event ) {
108
- log ( "Starting keyframes with name=" + event . name ) ;
109
- } ) ;
110
-
111
- parser . addListener ( "startkeyframerule" , function ( event ) {
112
- log ( "Starting keyframe rule with " + event . keys . length + " keys(s)" ) ;
113
-
114
- for ( var i = 0 , len = event . keys . length ; i < len ; i ++ ) {
115
- var key = event . keys [ i ] ;
116
-
117
- log ( " " + key + " (" + key . line + "," + key . col + ")" ) ;
118
- }
69
+ </ textarea >
70
+
71
+ < p >
72
+ < input type ="checkbox " id ="starHack " />
73
+ < label for ="starHack "> Accept star hack</ label >
74
+ < input type ="checkbox " id ="ieFilters " />
75
+ < label for ="ieFilters "> Accept IE filters</ label >
76
+ < input type ="checkbox " id ="strictMode " />
77
+ < label for ="strictMode "> Strict mode</ label >
78
+ </ p >
79
+
80
+ < input type ="button " onclick ="parse() " value ="parse ">
81
+
82
+ < p > (You may want to keep the CSS kinda small, this could take a while.)</ p >
83
+
84
+ < div id ="output "> </ div >
85
+
86
+ < script >
87
+
88
+ function parse ( ) {
89
+ document . getElementById ( "output" ) . innerHTML = "" ;
90
+ var parser = new parserlib . css . Parser ( {
91
+ starHack : document . getElementById ( "starHack" ) . checked ,
92
+ ieFilters : document . getElementById ( "ieFilters" ) . checked ,
93
+ strict : document . getElementById ( "strictMode" ) . checked
94
+ } ) ;
95
+
96
+ parser . addListener ( "startstylesheet" , function ( ) {
97
+ log ( "Starting style sheet" ) ;
98
+ } ) ;
99
+
100
+ parser . addListener ( "endstylesheet" , function ( ) {
101
+ log ( "Ending style sheet" ) ;
102
+ } ) ;
103
+
104
+ parser . addListener ( "charset" , function ( event ) {
105
+ log ( "Charset is " + event . charset ) ;
106
+ } ) ;
107
+
108
+ parser . addListener ( "namespace" , function ( event ) {
109
+ log ( "Namespace with prefix=" + event . prefix + " and URI=" + event . uri ) ;
110
+ } ) ;
111
+
112
+ parser . addListener ( "startfontface" , function ( event ) {
113
+ log ( "Starting font face" ) ;
114
+ } ) ;
115
+
116
+ parser . addListener ( "endfontface" , function ( event ) {
117
+ log ( "Ending font face" ) ;
118
+ } ) ;
119
+
120
+ parser . addListener ( "startkeyframes" , function ( event ) {
121
+ log ( "Starting keyframes with name=" + event . name ) ;
122
+ } ) ;
123
+
124
+ parser . addListener ( "startkeyframerule" , function ( event ) {
125
+ log ( "Starting keyframe rule with " + event . keys . length + " keys(s)" ) ;
126
+
127
+ for ( var i = 0 , len = event . keys . length ; i < len ; i ++ ) {
128
+ var key = event . keys [ i ] ;
129
+
130
+ log ( " " + key + " (" + key . line + "," + key . col + ")" ) ;
131
+ }
132
+ } ) ;
133
+
134
+ parser . addListener ( "endkeyframerule" , function ( event ) {
135
+ log ( "Ending keyframe rule with keys [" + event . keys + "]" ) ;
136
+ } ) ;
137
+
138
+ parser . addListener ( "endkeyframes" , function ( event ) {
139
+ log ( "Ending keyframes with name=" + event . name ) ;
140
+ } ) ;
141
+
142
+ parser . addListener ( "startpage" , function ( event ) {
143
+ log ( "Starting page with ID=" + event . id + " and pseudo=" + event . pseudo ) ;
144
+ } ) ;
145
+
146
+
147
+ parser . addListener ( "endpage" , function ( event ) {
148
+ log ( "Ending page with ID=" + event . id + " and pseudo=" + event . pseudo ) ;
149
+ } ) ;
119
150
120
- } ) ;
121
-
122
- parser . addListener ( "endkeyframerule" , function ( event ) {
123
- log ( "Ending keyframe rule with keys [" + event . keys + "]" ) ;
124
- } ) ;
125
-
126
- parser . addListener ( "endkeyframes" , function ( event ) {
127
- log ( "Ending keyframes with name=" + event . name ) ;
128
- } ) ;
129
-
130
- parser . addListener ( "startpage" , function ( event ) {
131
- log ( "Starting page with ID=" + event . id + " and pseudo=" + event . pseudo ) ;
132
- } ) ;
133
-
134
-
135
- parser . addListener ( "endpage" , function ( event ) {
136
- log ( "Ending page with ID=" + event . id + " and pseudo=" + event . pseudo ) ;
137
- } ) ;
138
-
139
- parser . addListener ( "startpagemargin" , function ( event ) {
140
- log ( "Starting page margin " + event . margin ) ;
141
- } ) ;
142
-
143
-
144
- parser . addListener ( "endpagemargin" , function ( event ) {
145
- log ( "Ending page margin " + event . margin ) ;
146
- } ) ;
147
-
148
-
149
- parser . addListener ( "import" , function ( event ) {
150
- log ( "Importing " + event . uri + " for media types [" + event . media + "]" ) ;
151
- } ) ;
152
-
153
- parser . addListener ( "startrule" , function ( event ) {
154
- log ( "Starting rule with " + event . selectors . length + " selector(s)" ) ;
155
-
156
- for ( var i = 0 , len = event . selectors . length ; i < len ; i ++ ) {
157
- var selector = event . selectors [ i ] ;
158
-
159
- log ( " Selector #1 (" + selector . line + "," + selector . col + ")" ) ;
160
-
161
- for ( var j = 0 , count = selector . parts . length ; j < count ; j ++ ) {
162
- log ( " Unit #" + ( j + 1 ) ) ;
163
-
164
- if ( selector . parts [ j ] instanceof parserlib . css . SelectorPart ) {
165
- log ( " Element name: " + selector . parts [ j ] . elementName ) ;
166
-
167
- for ( var k = 0 ; k < selector . parts [ j ] . modifiers . length ; k ++ ) {
168
- log ( " Modifier: " + selector . parts [ j ] . modifiers [ k ] ) ;
151
+ parser . addListener ( "startpagemargin" , function ( event ) {
152
+ log ( "Starting page margin " + event . margin ) ;
153
+ } ) ;
154
+
155
+
156
+ parser . addListener ( "endpagemargin" , function ( event ) {
157
+ log ( "Ending page margin " + event . margin ) ;
158
+ } ) ;
159
+
160
+
161
+ parser . addListener ( "import" , function ( event ) {
162
+ log ( "Importing " + event . uri + " for media types [" + event . media + "]" ) ;
163
+ } ) ;
164
+
165
+ parser . addListener ( "startrule" , function ( event ) {
166
+ log ( "Starting rule with " + event . selectors . length + " selector(s)" ) ;
167
+
168
+ for ( var i = 0 , len = event . selectors . length ; i < len ; i ++ ) {
169
+ var selector = event . selectors [ i ] ;
170
+
171
+ log ( " Selector #1 (" + selector . line + "," + selector . col + ")" ) ;
172
+
173
+ for ( var j = 0 , count = selector . parts . length ; j < count ; j ++ ) {
174
+ log ( " Unit #" + ( j + 1 ) ) ;
175
+
176
+ if ( selector . parts [ j ] instanceof parserlib . css . SelectorPart ) {
177
+ log ( " Element name: " + selector . parts [ j ] . elementName ) ;
178
+
179
+ for ( var k = 0 ; k < selector . parts [ j ] . modifiers . length ; k ++ ) {
180
+ log ( " Modifier: " + selector . parts [ j ] . modifiers [ k ] ) ;
181
+ }
182
+ } else {
183
+ log ( " Combinator: " + selector . parts [ j ] ) ;
169
184
}
170
- } else {
171
- log ( " Combinator: " + selector . parts [ j ] ) ;
185
+
172
186
}
173
-
174
-
187
+
175
188
}
176
-
177
-
178
- }
179
189
180
- } ) ;
181
-
182
- parser . addListener ( "endrule" , function ( event ) {
183
- log ( "Ending rule with selectors [" + event . selectors + "]" ) ;
184
- } ) ;
185
-
186
- parser . addListener ( "property" , function ( event ) {
187
- log ( "Property '" + event . property + "' has a value of '" + event . value + "' and " + ( event . important ? "is" : "isn't" ) + " important. (" + event . property . line + "," + event . property . col + ")" ) ;
188
- if ( event . invalid ) {
189
- log ( " Not valid: " + event . invalid . message ) ;
190
- }
191
- } ) ;
192
-
193
- parser . addListener ( "startmedia" , function ( event ) {
194
- log ( "Starting media [" + event . media + "]" ) ;
195
- } ) ;
196
-
197
- parser . addListener ( "error" , function ( event ) {
198
- log ( "Parse error: " + event . message + " (" + event . line + "," + event . col + ")" , "error" ) ;
199
- } ) ;
200
-
201
- parser . addListener ( "endmedia" , function ( event ) {
202
- log ( "Ending media [" + event . media + "]" ) ;
203
- } ) ;
204
-
205
- try {
206
- parser . parse ( document . getElementById ( "input" ) . value ) ;
207
- } catch ( ex ) {
208
- log ( "Parse error: " + ex . message , "error" ) ;
209
- }
210
- }
190
+ } ) ;
211
191
192
+ parser . addListener ( "endrule" , function ( event ) {
193
+ log ( "Ending rule with selectors [" + event . selectors + "]" ) ;
194
+ } ) ;
212
195
213
- function log ( value , level ) {
214
- var output = document . getElementById ( "output" ) ;
215
- output . innerHTML += "<span class=\"" + level + "\">" + value . replace ( / / g, " " ) + "</span><br>" ;
216
- }
196
+ parser . addListener ( "property" , function ( event ) {
197
+ log ( "Property '" + event . property + "' has a value of '" + event . value + "' and " + ( event . important ? "is" : "isn't" ) + " important. (" + event . property . line + "," + event . property . col + ")" ) ;
198
+ if ( event . invalid ) {
199
+ log ( " Not valid: " + event . invalid . message ) ;
200
+ }
201
+ } ) ;
202
+
203
+ parser . addListener ( "startmedia" , function ( event ) {
204
+ log ( "Starting media [" + event . media + "]" ) ;
205
+ } ) ;
217
206
207
+ parser . addListener ( "error" , function ( event ) {
208
+ log ( "Parse error: " + event . message + " (" + event . line + "," + event . col + ")" , "error" ) ;
209
+ } ) ;
218
210
211
+ parser . addListener ( "endmedia" , function ( event ) {
212
+ log ( "Ending media [" + event . media + "]" ) ;
213
+ } ) ;
214
+
215
+ try {
216
+ parser . parse ( document . getElementById ( "input" ) . value ) ;
217
+ } catch ( ex ) {
218
+ log ( "Parse error: " + ex . message , "error" ) ;
219
+ }
220
+ }
221
+
222
+ function log ( value , level ) {
223
+ var output = document . getElementById ( "output" ) ;
224
+ output . innerHTML += "<span class=\"" + level + "\">" + value . replace ( / / g, " " ) + "</span><br>" ;
225
+ }
219
226
220
- </ script >
227
+ </ script >
221
228
</ body >
222
229
</ html >
0 commit comments