csspool 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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