csspool 0.2.1 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,3 +1,7 @@
1
+ == 0.2.2
2
+
3
+ * I suck.
4
+
1
5
  == 0.2.1
2
6
 
3
7
  * Recovering from unexpected tokens in the properties section.
@@ -14,6 +14,7 @@ lib/css/sac/conditions/one_of_condition.rb
14
14
  lib/css/sac/conditions/pseudo_class_condition.rb
15
15
  lib/css/sac/document_handler.rb
16
16
  lib/css/sac/error_handler.rb
17
+ lib/css/sac/generated_parser.rb
17
18
  lib/css/sac/generated_property_parser.rb
18
19
  lib/css/sac/lexeme.rb
19
20
  lib/css/sac/lexical_unit.rb
@@ -51,6 +52,7 @@ test/test_condition.rb
51
52
  test/test_conditional_selector.rb
52
53
  test/test_descendant_selector.rb
53
54
  test/test_element_selector.rb
55
+ test/test_error_recovery.rb
54
56
  test/test_id_condition.rb
55
57
  test/test_lexeme.rb
56
58
  test/test_lexical_color.rb
data/Rakefile CHANGED
@@ -7,7 +7,7 @@ $LOAD_PATH.unshift File.join(File.dirname(__FILE__), "lib")
7
7
  GENERATED_PARSER = "lib/css/sac/generated_parser.rb"
8
8
  GENERATED_PROPERTY_PARSER = "lib/css/sac/generated_property_parser.rb"
9
9
 
10
- Hoe.new('csspool', '0.2.1') do |p|
10
+ Hoe.new('csspool', '0.2.2') do |p|
11
11
  p.rubyforge_name = 'csspool'
12
12
  p.author = 'Aaron Patterson'
13
13
  p.email = 'aaronp@rubyforge.org'
@@ -15,7 +15,7 @@ Hoe.new('csspool', '0.2.1') do |p|
15
15
  p.description = p.paragraphs_of('README.txt', 3).join("\n\n")
16
16
  p.url = p.paragraphs_of('README.txt', 1).first.strip
17
17
  p.changes = p.paragraphs_of('CHANGELOG.txt', 0..1).join("\n\n")
18
- p.clean_globs = [GENERATED_PARSER]
18
+ p.clean_globs = [GENERATED_PARSER, GENERATED_PROPERTY_PARSER]
19
19
  end
20
20
 
21
21
  class Array
@@ -54,3 +54,4 @@ task :parser => [GENERATED_PARSER, GENERATED_PROPERTY_PARSER]
54
54
 
55
55
  # make sure the parser's up-to-date when we test
56
56
  Rake::Task[:test].prerequisites << :parser
57
+ Rake::Task[:check_manifest].prerequisites << :parser
@@ -0,0 +1,975 @@
1
+ #
2
+ # DO NOT MODIFY!!!!
3
+ # This file is automatically generated by racc 1.4.5
4
+ # from racc grammer file "lib/parser.y".
5
+ #
6
+
7
+ require 'racc/parser'
8
+
9
+
10
+ require "css/sac/conditions"
11
+ require "css/sac/selectors"
12
+
13
+ include CSS::SAC::Conditions
14
+ include CSS::SAC::Selectors
15
+
16
+ module CSS
17
+
18
+ module SAC
19
+
20
+ class GeneratedParser < Racc::Parser
21
+
22
+ ##### racc 1.4.5 generates ###
23
+
24
+ racc_reduce_table = [
25
+ 0, 0, :racc_error,
26
+ 6, 43, :_reduce_none,
27
+ 3, 43, :_reduce_none,
28
+ 3, 46, :_reduce_none,
29
+ 3, 46, :_reduce_none,
30
+ 3, 46, :_reduce_none,
31
+ 2, 46, :_reduce_none,
32
+ 2, 46, :_reduce_none,
33
+ 2, 46, :_reduce_none,
34
+ 0, 46, :_reduce_none,
35
+ 7, 50, :_reduce_10,
36
+ 8, 54, :_reduce_11,
37
+ 5, 54, :_reduce_12,
38
+ 3, 45, :_reduce_none,
39
+ 3, 45, :_reduce_none,
40
+ 0, 45, :_reduce_none,
41
+ 7, 48, :_reduce_16,
42
+ 2, 55, :_reduce_17,
43
+ 3, 55, :_reduce_18,
44
+ 2, 58, :_reduce_none,
45
+ 1, 53, :_reduce_none,
46
+ 0, 53, :_reduce_none,
47
+ 4, 57, :_reduce_22,
48
+ 1, 57, :_reduce_23,
49
+ 7, 49, :_reduce_24,
50
+ 4, 59, :_reduce_25,
51
+ 1, 61, :_reduce_none,
52
+ 0, 61, :_reduce_none,
53
+ 2, 62, :_reduce_28,
54
+ 0, 62, :_reduce_none,
55
+ 2, 63, :_reduce_none,
56
+ 2, 63, :_reduce_none,
57
+ 0, 63, :_reduce_none,
58
+ 2, 64, :_reduce_33,
59
+ 2, 64, :_reduce_34,
60
+ 1, 64, :_reduce_35,
61
+ 1, 65, :_reduce_none,
62
+ 1, 65, :_reduce_none,
63
+ 2, 66, :_reduce_none,
64
+ 5, 47, :_reduce_39,
65
+ 2, 56, :_reduce_none,
66
+ 1, 56, :_reduce_none,
67
+ 0, 56, :_reduce_none,
68
+ 1, 68, :_reduce_43,
69
+ 3, 67, :_reduce_44,
70
+ 3, 67, :_reduce_45,
71
+ 2, 67, :_reduce_46,
72
+ 4, 70, :_reduce_47,
73
+ 1, 70, :_reduce_none,
74
+ 2, 71, :_reduce_49,
75
+ 1, 71, :_reduce_50,
76
+ 3, 69, :_reduce_51,
77
+ 1, 69, :_reduce_none,
78
+ 2, 75, :_reduce_53,
79
+ 1, 72, :_reduce_54,
80
+ 1, 72, :_reduce_55,
81
+ 6, 76, :_reduce_56,
82
+ 2, 78, :_reduce_57,
83
+ 2, 78, :_reduce_58,
84
+ 5, 80, :_reduce_59,
85
+ 4, 60, :_reduce_none,
86
+ 5, 60, :_reduce_61,
87
+ 4, 60, :_reduce_62,
88
+ 1, 60, :_reduce_none,
89
+ 4, 60, :_reduce_none,
90
+ 0, 60, :_reduce_none,
91
+ 2, 83, :_reduce_none,
92
+ 1, 82, :_reduce_none,
93
+ 0, 82, :_reduce_none,
94
+ 3, 81, :_reduce_69,
95
+ 1, 81, :_reduce_none,
96
+ 2, 84, :_reduce_71,
97
+ 1, 84, :_reduce_72,
98
+ 2, 84, :_reduce_none,
99
+ 2, 84, :_reduce_none,
100
+ 2, 84, :_reduce_none,
101
+ 1, 84, :_reduce_none,
102
+ 1, 84, :_reduce_none,
103
+ 2, 85, :_reduce_none,
104
+ 2, 85, :_reduce_none,
105
+ 2, 85, :_reduce_none,
106
+ 2, 85, :_reduce_none,
107
+ 2, 85, :_reduce_none,
108
+ 2, 85, :_reduce_none,
109
+ 2, 85, :_reduce_none,
110
+ 2, 85, :_reduce_none,
111
+ 5, 79, :_reduce_86,
112
+ 6, 79, :_reduce_87,
113
+ 2, 86, :_reduce_none,
114
+ 1, 73, :_reduce_none,
115
+ 0, 73, :_reduce_none,
116
+ 2, 74, :_reduce_91,
117
+ 2, 74, :_reduce_92,
118
+ 2, 74, :_reduce_93,
119
+ 2, 74, :_reduce_94,
120
+ 1, 74, :_reduce_none,
121
+ 1, 74, :_reduce_none,
122
+ 1, 74, :_reduce_none,
123
+ 1, 74, :_reduce_none,
124
+ 1, 87, :_reduce_99,
125
+ 4, 77, :_reduce_100,
126
+ 4, 77, :_reduce_101,
127
+ 0, 77, :_reduce_none,
128
+ 1, 88, :_reduce_none,
129
+ 1, 88, :_reduce_none,
130
+ 1, 88, :_reduce_none,
131
+ 1, 52, :_reduce_none,
132
+ 1, 52, :_reduce_none,
133
+ 2, 44, :_reduce_none,
134
+ 2, 44, :_reduce_none,
135
+ 2, 44, :_reduce_none,
136
+ 1, 44, :_reduce_none,
137
+ 1, 44, :_reduce_none,
138
+ 1, 44, :_reduce_none,
139
+ 0, 44, :_reduce_none,
140
+ 2, 51, :_reduce_none,
141
+ 0, 51, :_reduce_none ]
142
+
143
+ racc_reduce_n = 117
144
+
145
+ racc_shift_n = 220
146
+
147
+ racc_action_table = [
148
+ -70, 156, 53, 183, 184, 34, 54, 107, 48, 75,
149
+ 17, 162, 73, 52, 41, 132, 75, 47, 34, 73,
150
+ 4, 92, 4, -70, 7, 2, 3, 2, 3, -70,
151
+ 10, -70, 16, 163, 102, 22, 25, 30, 48, -70,
152
+ 157, 185, 117, 121, 133, 16, 127, 110, 22, 113,
153
+ 30, 91, 116, 118, 119, 122, 124, 126, 109, 111,
154
+ 141, 48, 4, 41, 142, 117, 121, 2, 3, 127,
155
+ 110, 114, 113, 215, 214, 116, 118, 119, 122, 124,
156
+ 126, 109, 111, 34, 48, 62, 63, 65, 117, 121,
157
+ 89, 34, 127, 110, 114, 113, 17, 34, 116, 118,
158
+ 119, 122, 124, 126, 109, 111, 7, 41, 41, 129,
159
+ 16, 34, 10, 22, 4, 30, 17, 114, 16, 2,
160
+ 3, 22, 25, 30, 16, 34, 41, 22, 4, 30,
161
+ 17, 28, 32, 2, 3, 34, 131, 41, 16, 34,
162
+ 134, 22, 25, 30, 17, 28, 32, 135, 7, 78,
163
+ 41, 41, 16, 34, 10, 22, 25, 30, 17, 28,
164
+ 32, 41, 16, 41, 143, 22, 16, 30, 34, 22,
165
+ 25, 30, 34, 28, 32, 41, 145, 17, 93, 93,
166
+ 16, 34, 4, 22, 25, 30, 17, 2, 3, 34,
167
+ 150, 41, 28, 32, 17, 16, 41, 84, 22, 16,
168
+ 30, 41, 22, 25, 30, 41, 41, 83, 16, 41,
169
+ 41, 22, 25, 30, 84, 84, 16, 41, 41, 22,
170
+ 25, 30, 41, 41, 83, 83, -116, 84, 84, 41,
171
+ 41, 84, 41, 41, 41, 41, 41, 83, 83, 41,
172
+ 41, 83, 41, -116, -116, 116, 118, 119, 122, 124,
173
+ 126, 109, 111, 4, 41, 41, -116, -116, 2, 3,
174
+ -116, 4, 7, 41, 4, 9, 2, 3, 10, 2,
175
+ 3, 172, 41, 41, 41, 52, 41, 41, 179, 41,
176
+ 41, 186, 187, 93, 189, 41, 41, 41, 55, 41,
177
+ 46, 41, 44, 43, 199, 200, 41, 93, 41, 204,
178
+ 41, 206, 41, 208, 15, 41, 41, 98, 41, 41,
179
+ 41, 41 ]
180
+
181
+ racc_action_check = [
182
+ 120, 115, 20, 144, 144, 64, 20, 79, 16, 40,
183
+ 64, 120, 40, 20, 19, 85, 79, 16, 38, 79,
184
+ 29, 58, 33, 120, 42, 29, 29, 33, 33, 120,
185
+ 42, 120, 64, 120, 66, 64, 64, 64, 170, 120,
186
+ 115, 144, 170, 170, 85, 38, 170, 170, 38, 170,
187
+ 38, 57, 170, 170, 170, 170, 170, 170, 170, 170,
188
+ 95, 164, 24, 74, 95, 164, 164, 24, 24, 164,
189
+ 164, 170, 164, 203, 203, 164, 164, 164, 164, 164,
190
+ 164, 164, 164, 37, 81, 31, 31, 31, 81, 81,
191
+ 53, 178, 81, 81, 164, 81, 178, 35, 81, 81,
192
+ 81, 81, 81, 81, 81, 81, 45, 52, 48, 82,
193
+ 37, 106, 45, 37, 11, 37, 106, 81, 178, 11,
194
+ 11, 178, 178, 178, 35, 67, 83, 35, 8, 35,
195
+ 67, 106, 106, 8, 8, 18, 84, 44, 106, 56,
196
+ 86, 106, 106, 106, 56, 67, 67, 87, 78, 43,
197
+ 92, 93, 67, 6, 78, 67, 67, 67, 6, 56,
198
+ 56, 94, 18, 41, 96, 18, 56, 18, 39, 56,
199
+ 56, 56, 60, 6, 6, 98, 103, 60, 105, 59,
200
+ 6, 140, 4, 6, 6, 6, 140, 4, 4, 88,
201
+ 107, 108, 60, 60, 88, 39, 109, 51, 39, 60,
202
+ 39, 110, 60, 60, 60, 51, 111, 51, 140, 113,
203
+ 32, 140, 140, 140, 138, 196, 88, 116, 117, 88,
204
+ 88, 88, 138, 196, 138, 196, 51, 175, 173, 118,
205
+ 119, 171, 62, 122, 124, 175, 173, 175, 173, 171,
206
+ 126, 171, 127, 138, 196, 128, 128, 128, 128, 128,
207
+ 128, 128, 128, 3, 30, 129, 175, 173, 3, 3,
208
+ 171, 2, 1, 131, 0, 1, 2, 2, 1, 0,
209
+ 0, 132, 133, 134, 135, 136, 28, 27, 141, 143,
210
+ 26, 145, 148, 151, 156, 157, 162, 163, 22, 63,
211
+ 15, 172, 10, 9, 176, 177, 7, 180, 181, 182,
212
+ 187, 188, 189, 194, 5, 199, 200, 61, 206, 208,
213
+ 214, 215 ]
214
+
215
+ racc_action_pointer = [
216
+ 255, 237, 252, 244, 173, 304, 147, 287, 119, 283,
217
+ 281, 105, nil, nil, nil, 290, 6, nil, 129, 5,
218
+ 1, nil, 277, nil, 53, nil, 271, 268, 267, 11,
219
+ 245, 78, 201, 13, nil, 91, nil, 77, 12, 162,
220
+ -1, 154, -1, 119, 128, 81, nil, nil, 99, nil,
221
+ nil, 196, 98, 85, nil, nil, 133, 46, 16, 168,
222
+ 166, 296, 223, 280, -1, nil, 23, 119, nil, nil,
223
+ nil, nil, nil, nil, 54, nil, nil, nil, 123, 6,
224
+ nil, 82, 76, 117, 106, 14, 108, 117, 183, nil,
225
+ nil, nil, 141, 142, 152, 59, 152, nil, 166, nil,
226
+ nil, nil, nil, 143, nil, 167, 105, 181, 182, 187,
227
+ 192, 197, nil, 200, nil, 0, 208, 209, 220, 221,
228
+ -1, nil, 224, nil, 225, nil, 231, 233, 229, 246,
229
+ nil, 254, 241, 263, 264, 265, 263, nil, 213, nil,
230
+ 175, 273, nil, 270, 0, 270, nil, nil, 252, nil,
231
+ nil, 272, nil, nil, nil, nil, 244, 276, nil, nil,
232
+ nil, nil, 277, 278, 59, nil, nil, nil, nil, nil,
233
+ 36, 230, 282, 227, nil, 226, 262, 263, 85, nil,
234
+ 286, 289, 260, nil, nil, nil, nil, 291, 271, 293,
235
+ nil, nil, nil, nil, 279, nil, 214, nil, nil, 296,
236
+ 297, nil, nil, 63, nil, nil, 299, nil, 300, nil,
237
+ nil, nil, nil, nil, 301, 302, nil, nil, nil, nil ]
238
+
239
+ racc_action_default = [
240
+ -114, -15, -112, -113, -111, -117, -9, -116, -114, -117,
241
+ -117, -114, -109, -110, -108, -117, -117, -54, -98, -116,
242
+ -48, -2, -117, -43, -114, -55, -116, -116, -116, -114,
243
+ -116, -52, -116, -114, -99, -90, -50, -96, -97, -95,
244
+ -117, -116, -15, -117, -116, -15, 220, -58, -116, -57,
245
+ -94, -65, -116, -117, -46, -53, -6, -117, -117, -117,
246
+ -7, -117, -116, -116, -117, -35, -27, -8, -49, -89,
247
+ -92, -93, -91, -107, -116, -106, -115, -13, -15, -117,
248
+ -14, -117, -117, -116, -117, -63, -117, -117, -117, -45,
249
+ -3, -44, -116, -116, -116, -117, -23, -4, -116, -33,
250
+ -34, -51, -26, -29, -5, -21, -9, -117, -116, -116,
251
+ -116, -116, -77, -116, -36, -117, -116, -116, -116, -116,
252
+ -32, -37, -116, -72, -116, -76, -116, -116, -117, -116,
253
+ -38, -116, -117, -116, -116, -116, -48, -47, -65, -19,
254
+ -42, -117, -17, -116, -102, -117, -25, -20, -117, -1,
255
+ -12, -21, -84, -74, -85, -75, -117, -116, -78, -88,
256
+ -79, -80, -116, -116, -117, -81, -82, -83, -73, -71,
257
+ -117, -65, -116, -65, -39, -65, -117, -117, -41, -18,
258
+ -117, -116, -117, -104, -105, -103, -28, -116, -117, -116,
259
+ -86, -31, -30, -69, -68, -62, -65, -60, -64, -116,
260
+ -116, -40, -22, -117, -56, -10, -116, -87, -116, -59,
261
+ -67, -61, -24, -16, -116, -116, -11, -66, -100, -101 ]
262
+
263
+ racc_goto_table = [
264
+ 40, 86, 6, 148, 178, 74, 115, 21, 95, 177,
265
+ 50, 164, 51, 146, 103, 64, 136, 101, 137, 57,
266
+ 58, 59, 68, 61, 94, 66, 182, 69, 49, 70,
267
+ 71, 72, 5, 209, 76, 210, 169, 79, 181, nil,
268
+ nil, 81, 178, 77, 108, 88, 80, 201, nil, 188,
269
+ nil, nil, nil, nil, nil, 99, 100, 90, nil, nil,
270
+ nil, 97, nil, nil, nil, nil, nil, 105, 104, nil,
271
+ nil, nil, nil, nil, nil, nil, 130, nil, nil, 106,
272
+ nil, nil, nil, nil, nil, 138, 139, 140, 176, 193,
273
+ nil, 144, nil, nil, nil, 194, nil, nil, nil, nil,
274
+ nil, 151, 152, 153, 154, nil, 155, 149, nil, 158,
275
+ 159, 160, 161, nil, nil, 165, nil, 166, nil, 167,
276
+ 168, 195, 170, 197, 171, 198, 173, 174, 175, 202,
277
+ 1, nil, 12, 13, 14, nil, 180, nil, 42, nil,
278
+ nil, 45, nil, nil, nil, nil, 211, nil, nil, nil,
279
+ 190, nil, nil, nil, 56, 191, 192, nil, nil, 60,
280
+ nil, nil, nil, 67, nil, 196, nil, nil, nil, nil,
281
+ nil, nil, nil, nil, 203, nil, nil, nil, nil, nil,
282
+ 205, nil, 207, nil, nil, nil, nil, nil, nil, nil,
283
+ nil, nil, 212, 213, nil, nil, nil, nil, nil, 216,
284
+ nil, 217, nil, nil, nil, nil, nil, 218, 219 ]
285
+
286
+ racc_goto_check = [
287
+ 9, 18, 3, 11, 5, 10, 39, 4, 15, 14,
288
+ 32, 21, 9, 20, 19, 22, 26, 27, 28, 9,
289
+ 9, 9, 31, 9, 13, 9, 35, 32, 37, 32,
290
+ 32, 32, 1, 40, 9, 41, 43, 9, 46, nil,
291
+ nil, 9, 5, 3, 10, 9, 3, 14, nil, 11,
292
+ nil, nil, nil, nil, nil, 9, 9, 4, nil, nil,
293
+ nil, 4, nil, nil, nil, nil, nil, 9, 4, nil,
294
+ nil, nil, nil, nil, nil, nil, 9, nil, nil, 3,
295
+ nil, nil, nil, nil, nil, 9, 9, 9, 18, 39,
296
+ nil, 9, nil, nil, nil, 39, nil, nil, nil, nil,
297
+ nil, 9, 9, 9, 9, nil, 9, 4, nil, 9,
298
+ 9, 9, 9, nil, nil, 9, nil, 9, nil, 9,
299
+ 9, 18, 9, 18, 9, 18, 9, 9, 9, 15,
300
+ 2, nil, 2, 2, 2, nil, 9, nil, 2, nil,
301
+ nil, 2, nil, nil, nil, nil, 18, nil, nil, nil,
302
+ 9, nil, nil, nil, 2, 9, 9, nil, nil, 2,
303
+ nil, nil, nil, 2, nil, 9, nil, nil, nil, nil,
304
+ nil, nil, nil, nil, 9, nil, nil, nil, nil, nil,
305
+ 9, nil, 9, nil, nil, nil, nil, nil, nil, nil,
306
+ nil, nil, 9, 9, nil, nil, nil, nil, nil, 9,
307
+ nil, 9, nil, nil, nil, nil, nil, 9, 9 ]
308
+
309
+ racc_goto_pointer = [
310
+ nil, 32, 130, 1, 1, -136, nil, nil, nil, -7,
311
+ -35, -102, nil, -35, -131, -51, nil, nil, -50, -52,
312
+ -90, -109, -16, nil, nil, nil, -72, -47, -70, nil,
313
+ nil, -13, -8, nil, nil, -118, nil, 12, nil, -75,
314
+ -161, -159, nil, -92, nil, nil, -106 ]
315
+
316
+ racc_goto_default = [
317
+ nil, nil, nil, nil, nil, 24, 29, 33, 8, 87,
318
+ nil, nil, 11, nil, nil, 147, 96, 27, nil, nil,
319
+ nil, nil, nil, 128, 82, 19, 20, 23, 26, 31,
320
+ 35, nil, 36, 37, 38, nil, 18, 112, 85, nil,
321
+ nil, nil, 120, 123, 125, 39, nil ]
322
+
323
+ racc_token_table = {
324
+ false => 0,
325
+ Object.new => 1,
326
+ :FUNCTION => 2,
327
+ :INCLUDES => 3,
328
+ :DASHMATCH => 4,
329
+ :LBRACE => 5,
330
+ :HASH => 6,
331
+ :PLUS => 7,
332
+ :GREATER => 8,
333
+ :S => 9,
334
+ :STRING => 10,
335
+ :IDENT => 11,
336
+ :COMMA => 12,
337
+ :URI => 13,
338
+ :CDO => 14,
339
+ :CDC => 15,
340
+ :NUMBER => 16,
341
+ :PERCENTAGE => 17,
342
+ :LENGTH => 18,
343
+ :EMS => 19,
344
+ :EXS => 20,
345
+ :ANGLE => 21,
346
+ :TIME => 22,
347
+ :FREQ => 23,
348
+ :IMPORTANT_SYM => 24,
349
+ :IMPORT_SYM => 25,
350
+ :MEDIA_SYM => 26,
351
+ :PAGE_SYM => 27,
352
+ :CHARSET_SYM => 28,
353
+ :DIMENSION => 29,
354
+ ";" => 30,
355
+ "@" => 31,
356
+ "}" => 32,
357
+ ":" => 33,
358
+ "/" => 34,
359
+ "-" => 35,
360
+ "." => 36,
361
+ "*" => 37,
362
+ "[" => 38,
363
+ "]" => 39,
364
+ ")" => 40,
365
+ "=" => 41 }
366
+
367
+ racc_use_result_var = true
368
+
369
+ racc_nt_base = 42
370
+
371
+ Racc_arg = [
372
+ racc_action_table,
373
+ racc_action_check,
374
+ racc_action_default,
375
+ racc_action_pointer,
376
+ racc_goto_table,
377
+ racc_goto_check,
378
+ racc_goto_default,
379
+ racc_goto_pointer,
380
+ racc_nt_base,
381
+ racc_reduce_table,
382
+ racc_token_table,
383
+ racc_shift_n,
384
+ racc_reduce_n,
385
+ racc_use_result_var ]
386
+
387
+ Racc_token_to_s_table = [
388
+ '$end',
389
+ 'error',
390
+ 'FUNCTION',
391
+ 'INCLUDES',
392
+ 'DASHMATCH',
393
+ 'LBRACE',
394
+ 'HASH',
395
+ 'PLUS',
396
+ 'GREATER',
397
+ 'S',
398
+ 'STRING',
399
+ 'IDENT',
400
+ 'COMMA',
401
+ 'URI',
402
+ 'CDO',
403
+ 'CDC',
404
+ 'NUMBER',
405
+ 'PERCENTAGE',
406
+ 'LENGTH',
407
+ 'EMS',
408
+ 'EXS',
409
+ 'ANGLE',
410
+ 'TIME',
411
+ 'FREQ',
412
+ 'IMPORTANT_SYM',
413
+ 'IMPORT_SYM',
414
+ 'MEDIA_SYM',
415
+ 'PAGE_SYM',
416
+ 'CHARSET_SYM',
417
+ 'DIMENSION',
418
+ '";"',
419
+ '"@"',
420
+ '"}"',
421
+ '":"',
422
+ '"/"',
423
+ '"-"',
424
+ '"."',
425
+ '"*"',
426
+ '"["',
427
+ '"]"',
428
+ '")"',
429
+ '"="',
430
+ '$start',
431
+ 'stylesheet',
432
+ 's_cdo_cdc_0toN',
433
+ 'import_0toN',
434
+ 'ruleset_media_page_0toN',
435
+ 'ruleset',
436
+ 'media',
437
+ 'page',
438
+ 'import',
439
+ 's_0toN',
440
+ 'string_or_uri',
441
+ 'medium_0toN',
442
+ 'ignorable_at',
443
+ 'medium_rollup',
444
+ 'ruleset_0toN',
445
+ 'medium_1toN',
446
+ 'medium',
447
+ 'page_start',
448
+ 'declaration_0toN',
449
+ 'optional_page',
450
+ 'optional_pseudo_page',
451
+ 'operator',
452
+ 'combinator',
453
+ 'unary_operator',
454
+ 'property',
455
+ 'selector_1toN',
456
+ 'selector',
457
+ 'simple_selector_1toN',
458
+ 'selector_list',
459
+ 'simple_selector',
460
+ 'element_name',
461
+ 'hcap_0toN',
462
+ 'hcap_1toN',
463
+ 'class',
464
+ 'attrib',
465
+ 'attrib_val_0or1',
466
+ 'pseudo',
467
+ 'function',
468
+ 'declaration',
469
+ 'expr',
470
+ 'prio_0or1',
471
+ 'prio',
472
+ 'term',
473
+ 'num_or_length',
474
+ 'hexcolor',
475
+ 'attribute_id',
476
+ 'eql_incl_dash']
477
+
478
+ Racc_debug_parser = false
479
+
480
+ ##### racc system variables end #####
481
+
482
+ # reduce 0 omitted
483
+
484
+ # reduce 1 omitted
485
+
486
+ # reduce 2 omitted
487
+
488
+ # reduce 3 omitted
489
+
490
+ # reduce 4 omitted
491
+
492
+ # reduce 5 omitted
493
+
494
+ # reduce 6 omitted
495
+
496
+ # reduce 7 omitted
497
+
498
+ # reduce 8 omitted
499
+
500
+ # reduce 9 omitted
501
+
502
+ module_eval <<'.,.,', 'lib/parser.y', 24
503
+ def _reduce_10( val, _values, result )
504
+ self.document_handler.import_style(val[2], val[4] || [])
505
+ result
506
+ end
507
+ .,.,
508
+
509
+ module_eval <<'.,.,', 'lib/parser.y', 29
510
+ def _reduce_11( val, _values, result )
511
+ self.document_handler.ignorable_at_rule(val[1])
512
+ result
513
+ end
514
+ .,.,
515
+
516
+ module_eval <<'.,.,', 'lib/parser.y', 33
517
+ def _reduce_12( val, _values, result )
518
+ yyerrok
519
+ self.document_handler.ignorable_at_rule(val[1])
520
+ result
521
+ end
522
+ .,.,
523
+
524
+ # reduce 13 omitted
525
+
526
+ # reduce 14 omitted
527
+
528
+ # reduce 15 omitted
529
+
530
+ module_eval <<'.,.,', 'lib/parser.y', 43
531
+ def _reduce_16( val, _values, result )
532
+ self.document_handler.end_media(val[2])
533
+ result
534
+ end
535
+ .,.,
536
+
537
+ module_eval <<'.,.,', 'lib/parser.y', 45
538
+ def _reduce_17( val, _values, result )
539
+ self.document_handler.start_media(val.first)
540
+ result
541
+ end
542
+ .,.,
543
+
544
+ module_eval <<'.,.,', 'lib/parser.y', 52
545
+ def _reduce_18( val, _values, result )
546
+ yyerrok
547
+ self.document_handler.start_media(val.first)
548
+ error = ParseException.new("Error near: \"#{val[0]}\"")
549
+ self.error_handler.error(error)
550
+ result
551
+ end
552
+ .,.,
553
+
554
+ # reduce 19 omitted
555
+
556
+ # reduce 20 omitted
557
+
558
+ # reduce 21 omitted
559
+
560
+ module_eval <<'.,.,', 'lib/parser.y', 61
561
+ def _reduce_22( val, _values, result )
562
+ result = [val.first, val.last].flatten
563
+ result
564
+ end
565
+ .,.,
566
+
567
+ module_eval <<'.,.,', 'lib/parser.y', 62
568
+ def _reduce_23( val, _values, result )
569
+ result = [val.first]
570
+ result
571
+ end
572
+ .,.,
573
+
574
+ module_eval <<'.,.,', 'lib/parser.y', 69
575
+ def _reduce_24( val, _values, result )
576
+ page_stuff = val.first
577
+ self.document_handler.end_page(page_stuff[0], page_stuff[1])
578
+ result
579
+ end
580
+ .,.,
581
+
582
+ module_eval <<'.,.,', 'lib/parser.y', 75
583
+ def _reduce_25( val, _values, result )
584
+ result = [val[2], val[3]]
585
+ self.document_handler.start_page(val[2], val[3])
586
+ result
587
+ end
588
+ .,.,
589
+
590
+ # reduce 26 omitted
591
+
592
+ # reduce 27 omitted
593
+
594
+ module_eval <<'.,.,', 'lib/parser.y', 81
595
+ def _reduce_28( val, _values, result )
596
+ result = val[1]
597
+ result
598
+ end
599
+ .,.,
600
+
601
+ # reduce 29 omitted
602
+
603
+ # reduce 30 omitted
604
+
605
+ # reduce 31 omitted
606
+
607
+ # reduce 32 omitted
608
+
609
+ module_eval <<'.,.,', 'lib/parser.y', 90
610
+ def _reduce_33( val, _values, result )
611
+ result = :SAC_DIRECT_ADJACENT_SELECTOR
612
+ result
613
+ end
614
+ .,.,
615
+
616
+ module_eval <<'.,.,', 'lib/parser.y', 91
617
+ def _reduce_34( val, _values, result )
618
+ result = :SAC_CHILD_SELECTOR
619
+ result
620
+ end
621
+ .,.,
622
+
623
+ module_eval <<'.,.,', 'lib/parser.y', 92
624
+ def _reduce_35( val, _values, result )
625
+ result = :SAC_DESCENDANT_SELECTOR
626
+ result
627
+ end
628
+ .,.,
629
+
630
+ # reduce 36 omitted
631
+
632
+ # reduce 37 omitted
633
+
634
+ # reduce 38 omitted
635
+
636
+ module_eval <<'.,.,', 'lib/parser.y', 104
637
+ def _reduce_39( val, _values, result )
638
+ self.document_handler.end_selector([val.first].flatten.compact)
639
+ result
640
+ end
641
+ .,.,
642
+
643
+ # reduce 40 omitted
644
+
645
+ # reduce 41 omitted
646
+
647
+ # reduce 42 omitted
648
+
649
+ module_eval <<'.,.,', 'lib/parser.y', 111
650
+ def _reduce_43( val, _values, result )
651
+ result = val.flatten
652
+ result
653
+ end
654
+ .,.,
655
+
656
+ module_eval <<'.,.,', 'lib/parser.y', 117
657
+ def _reduce_44( val, _values, result )
658
+ self.document_handler.start_selector([val.first].flatten.compact)
659
+ result
660
+ end
661
+ .,.,
662
+
663
+ module_eval <<'.,.,', 'lib/parser.y', 121
664
+ def _reduce_45( val, _values, result )
665
+ yyerrok
666
+ self.document_handler.start_selector([val.first].flatten.compact)
667
+ result
668
+ end
669
+ .,.,
670
+
671
+ module_eval <<'.,.,', 'lib/parser.y', 124
672
+ def _reduce_46( val, _values, result )
673
+ self.document_handler.start_selector([val.first].flatten.compact)
674
+ result
675
+ end
676
+ .,.,
677
+
678
+ module_eval <<'.,.,', 'lib/parser.y', 126
679
+ def _reduce_47( val, _values, result )
680
+ result = [val[0], val[3]]
681
+ result
682
+ end
683
+ .,.,
684
+
685
+ # reduce 48 omitted
686
+
687
+ module_eval <<'.,.,', 'lib/parser.y', 137
688
+ def _reduce_49( val, _values, result )
689
+ result = if val[1].nil?
690
+ val.first
691
+ else
692
+ ConditionalSelector.new(val.first, val[1])
693
+ end
694
+ result
695
+ end
696
+ .,.,
697
+
698
+ module_eval <<'.,.,', 'lib/parser.y', 140
699
+ def _reduce_50( val, _values, result )
700
+ result = ConditionalSelector.new(nil, val.first)
701
+ result
702
+ end
703
+ .,.,
704
+
705
+ module_eval <<'.,.,', 'lib/parser.y', 153
706
+ def _reduce_51( val, _values, result )
707
+ result =
708
+ case val[1]
709
+ when :SAC_DIRECT_ADJACENT_SELECTOR
710
+ SiblingSelector.new(val.first, val[2])
711
+ when :SAC_DESCENDANT_SELECTOR
712
+ DescendantSelector.new(val.first, val[2])
713
+ when :SAC_CHILD_SELECTOR
714
+ ChildSelector.new(val.first, val[2])
715
+ end
716
+ result
717
+ end
718
+ .,.,
719
+
720
+ # reduce 52 omitted
721
+
722
+ module_eval <<'.,.,', 'lib/parser.y', 156
723
+ def _reduce_53( val, _values, result )
724
+ result = ClassCondition.new(val[1])
725
+ result
726
+ end
727
+ .,.,
728
+
729
+ module_eval <<'.,.,', 'lib/parser.y', 159
730
+ def _reduce_54( val, _values, result )
731
+ result = ElementSelector.new(val.first)
732
+ result
733
+ end
734
+ .,.,
735
+
736
+ module_eval <<'.,.,', 'lib/parser.y', 160
737
+ def _reduce_55( val, _values, result )
738
+ result = SimpleSelector.new()
739
+ result
740
+ end
741
+ .,.,
742
+
743
+ module_eval <<'.,.,', 'lib/parser.y', 166
744
+ def _reduce_56( val, _values, result )
745
+ result = AttributeCondition.build(val[2], val[4])
746
+ result
747
+ end
748
+ .,.,
749
+
750
+ module_eval <<'.,.,', 'lib/parser.y', 171
751
+ def _reduce_57( val, _values, result )
752
+ result = PseudoClassCondition.new(val[1])
753
+ result
754
+ end
755
+ .,.,
756
+
757
+ module_eval <<'.,.,', 'lib/parser.y', 171
758
+ def _reduce_58( val, _values, result )
759
+ result = PseudoClassCondition.new(val[1])
760
+ result
761
+ end
762
+ .,.,
763
+
764
+ module_eval <<'.,.,', 'lib/parser.y', 185
765
+ def _reduce_59( val, _values, result )
766
+ if value = self.property_parser.parse_tokens(
767
+ self.tokenizer.tokenize(val.flatten[0..-2].join(' '))
768
+ )
769
+
770
+ value = [value].flatten
771
+
772
+ self.document_handler.property(val.first, value, !val[4].nil?)
773
+ result = value
774
+ end
775
+ result
776
+ end
777
+ .,.,
778
+
779
+ # reduce 60 omitted
780
+
781
+ module_eval <<'.,.,', 'lib/parser.y', 193
782
+ def _reduce_61( val, _values, result )
783
+ yyerrok
784
+ error = ParseException.new("Unkown property: \"#{val[1]}\"")
785
+ self.error_handler.error(error)
786
+ result
787
+ end
788
+ .,.,
789
+
790
+ module_eval <<'.,.,', 'lib/parser.y', 198
791
+ def _reduce_62( val, _values, result )
792
+ yyerrok
793
+ error = ParseException.new("Unkown property: \"#{val[0]}\"")
794
+ self.error_handler.error(error)
795
+ result
796
+ end
797
+ .,.,
798
+
799
+ # reduce 63 omitted
800
+
801
+ # reduce 64 omitted
802
+
803
+ # reduce 65 omitted
804
+
805
+ # reduce 66 omitted
806
+
807
+ # reduce 67 omitted
808
+
809
+ # reduce 68 omitted
810
+
811
+ module_eval <<'.,.,', 'lib/parser.y', 210
812
+ def _reduce_69( val, _values, result )
813
+ result = val
814
+ result
815
+ end
816
+ .,.,
817
+
818
+ # reduce 70 omitted
819
+
820
+ module_eval <<'.,.,', 'lib/parser.y', 214
821
+ def _reduce_71( val, _values, result )
822
+ result = val
823
+ result
824
+ end
825
+ .,.,
826
+
827
+ module_eval <<'.,.,', 'lib/parser.y', 215
828
+ def _reduce_72( val, _values, result )
829
+ result = val
830
+ result
831
+ end
832
+ .,.,
833
+
834
+ # reduce 73 omitted
835
+
836
+ # reduce 74 omitted
837
+
838
+ # reduce 75 omitted
839
+
840
+ # reduce 76 omitted
841
+
842
+ # reduce 77 omitted
843
+
844
+ # reduce 78 omitted
845
+
846
+ # reduce 79 omitted
847
+
848
+ # reduce 80 omitted
849
+
850
+ # reduce 81 omitted
851
+
852
+ # reduce 82 omitted
853
+
854
+ # reduce 83 omitted
855
+
856
+ # reduce 84 omitted
857
+
858
+ # reduce 85 omitted
859
+
860
+ module_eval <<'.,.,', 'lib/parser.y', 236
861
+ def _reduce_86( val, _values, result )
862
+ result = Function.new(val[0], val[2].flatten.select { |x| x !~ /,/ })
863
+ result
864
+ end
865
+ .,.,
866
+
867
+ module_eval <<'.,.,', 'lib/parser.y', 236
868
+ def _reduce_87( val, _values, result )
869
+ yyerrok; result = [val[0], val[2], val[3]]
870
+ result
871
+ end
872
+ .,.,
873
+
874
+ # reduce 88 omitted
875
+
876
+ # reduce 89 omitted
877
+
878
+ # reduce 90 omitted
879
+
880
+ module_eval <<'.,.,', 'lib/parser.y', 249
881
+ def _reduce_91( val, _values, result )
882
+ result = CombinatorCondition.new(val[0], val[1])
883
+ result
884
+ end
885
+ .,.,
886
+
887
+ module_eval <<'.,.,', 'lib/parser.y', 252
888
+ def _reduce_92( val, _values, result )
889
+ result = CombinatorCondition.new(val[0], val[1])
890
+ result
891
+ end
892
+ .,.,
893
+
894
+ module_eval <<'.,.,', 'lib/parser.y', 255
895
+ def _reduce_93( val, _values, result )
896
+ result = CombinatorCondition.new(val[0], val[1])
897
+ result
898
+ end
899
+ .,.,
900
+
901
+ module_eval <<'.,.,', 'lib/parser.y', 258
902
+ def _reduce_94( val, _values, result )
903
+ result = CombinatorCondition.new(val[0], val[1])
904
+ result
905
+ end
906
+ .,.,
907
+
908
+ # reduce 95 omitted
909
+
910
+ # reduce 96 omitted
911
+
912
+ # reduce 97 omitted
913
+
914
+ # reduce 98 omitted
915
+
916
+ module_eval <<'.,.,', 'lib/parser.y', 264
917
+ def _reduce_99( val, _values, result )
918
+ result = IDCondition.new(val.first)
919
+ result
920
+ end
921
+ .,.,
922
+
923
+ module_eval <<'.,.,', 'lib/parser.y', 267
924
+ def _reduce_100( val, _values, result )
925
+ result = [val.first, val[2]]
926
+ result
927
+ end
928
+ .,.,
929
+
930
+ module_eval <<'.,.,', 'lib/parser.y', 268
931
+ def _reduce_101( val, _values, result )
932
+ result = [val.first, val[2]]
933
+ result
934
+ end
935
+ .,.,
936
+
937
+ # reduce 102 omitted
938
+
939
+ # reduce 103 omitted
940
+
941
+ # reduce 104 omitted
942
+
943
+ # reduce 105 omitted
944
+
945
+ # reduce 106 omitted
946
+
947
+ # reduce 107 omitted
948
+
949
+ # reduce 108 omitted
950
+
951
+ # reduce 109 omitted
952
+
953
+ # reduce 110 omitted
954
+
955
+ # reduce 111 omitted
956
+
957
+ # reduce 112 omitted
958
+
959
+ # reduce 113 omitted
960
+
961
+ # reduce 114 omitted
962
+
963
+ # reduce 115 omitted
964
+
965
+ # reduce 116 omitted
966
+
967
+ def _reduce_none( val, _values, result )
968
+ result
969
+ end
970
+
971
+ end # class GeneratedParser
972
+
973
+ end # module SAC
974
+
975
+ end # module CSS
@@ -14,7 +14,7 @@ module CSS
14
14
  module SAC
15
15
  class Parser < CSS::SAC::GeneratedParser
16
16
  # The version of CSSPool you're using
17
- VERSION = '0.2.1'
17
+ VERSION = '0.2.2'
18
18
 
19
19
  TOKENIZER = Tokenizer.new
20
20
 
@@ -0,0 +1,28 @@
1
+ require File.dirname(__FILE__) + "/helper"
2
+
3
+ class ErrorRecoveryTest < Test::Unit::TestCase
4
+ def setup
5
+ @sac = CSS::SAC::Parser.new
6
+ end
7
+
8
+ def test_unexpected_color
9
+ doc = @sac.parse('
10
+ a { color: red; }
11
+ body { border: solid 1px; #000; color: red; }
12
+ p { color: blue; }
13
+ ')
14
+ assert_equal 3, doc.rules.length
15
+
16
+ a_rule = doc['a']
17
+ assert a_rule
18
+ assert_equal 1, a_rule.properties.length
19
+
20
+ body_rule = doc['body']
21
+ assert body_rule
22
+ assert_equal 2, body_rule.properties.length
23
+
24
+ p_rule = doc['p']
25
+ assert p_rule
26
+ assert_equal 1, p_rule.properties.length
27
+ end
28
+ end
metadata CHANGED
@@ -3,8 +3,8 @@ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: csspool
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.2.1
7
- date: 2007-12-01 00:00:00 -08:00
6
+ version: 0.2.2
7
+ date: 2007-12-04 00:00:00 -08:00
8
8
  summary: Parses CSS
9
9
  require_paths:
10
10
  - lib
@@ -45,6 +45,7 @@ files:
45
45
  - lib/css/sac/conditions/pseudo_class_condition.rb
46
46
  - lib/css/sac/document_handler.rb
47
47
  - lib/css/sac/error_handler.rb
48
+ - lib/css/sac/generated_parser.rb
48
49
  - lib/css/sac/generated_property_parser.rb
49
50
  - lib/css/sac/lexeme.rb
50
51
  - lib/css/sac/lexical_unit.rb
@@ -82,6 +83,7 @@ files:
82
83
  - test/test_conditional_selector.rb
83
84
  - test/test_descendant_selector.rb
84
85
  - test/test_element_selector.rb
86
+ - test/test_error_recovery.rb
85
87
  - test/test_id_condition.rb
86
88
  - test/test_lexeme.rb
87
89
  - test/test_lexical_color.rb