csspool 2.0.0 → 3.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (57) hide show
  1. data/.gemtest +0 -0
  2. data/CHANGELOG.rdoc +6 -0
  3. data/Manifest.txt +10 -14
  4. data/README.rdoc +8 -21
  5. data/Rakefile +36 -2
  6. data/lib/csspool/collection.rb +2 -2
  7. data/lib/csspool/css/charset.rb +8 -2
  8. data/lib/csspool/css/declaration.rb +13 -2
  9. data/lib/csspool/css/document_handler.rb +3 -3
  10. data/lib/csspool/css/import_rule.rb +15 -3
  11. data/lib/csspool/css/media.rb +8 -2
  12. data/lib/csspool/css/parser.rb +1090 -0
  13. data/lib/csspool/css/parser.y +347 -0
  14. data/lib/csspool/css/rule_set.rb +8 -3
  15. data/lib/csspool/css/tokenizer.rb +228 -0
  16. data/lib/csspool/css/tokenizer.rex +96 -0
  17. data/lib/csspool/css.rb +1 -0
  18. data/lib/csspool/node.rb +29 -1
  19. data/lib/csspool/sac/document.rb +3 -3
  20. data/lib/csspool/sac/parser.rb +6 -112
  21. data/lib/csspool/terms/function.rb +1 -1
  22. data/lib/csspool/terms/ident.rb +1 -1
  23. data/lib/csspool/terms/number.rb +1 -1
  24. data/lib/csspool/terms/rgb.rb +1 -4
  25. data/lib/csspool/terms/string.rb +1 -1
  26. data/lib/csspool/visitors/children.rb +50 -0
  27. data/lib/csspool/visitors/comparable.rb +9 -3
  28. data/lib/csspool/visitors/iterator.rb +80 -0
  29. data/lib/csspool/visitors/to_css.rb +61 -45
  30. data/lib/csspool/visitors.rb +2 -0
  31. data/lib/csspool.rb +6 -3
  32. data/test/css/test_parser.rb +412 -0
  33. data/test/css/test_tokenizer.rb +320 -0
  34. data/test/helper.rb +2 -2
  35. data/test/sac/test_parser.rb +3 -8
  36. data/test/sac/test_terms.rb +128 -34
  37. data/test/test_collection.rb +1 -1
  38. data/test/test_parser.rb +1 -1
  39. data/test/visitors/test_children.rb +20 -0
  40. data/test/visitors/test_comparable.rb +31 -1
  41. data/test/visitors/test_each.rb +19 -0
  42. data/test/visitors/test_to_css.rb +125 -1
  43. metadata +90 -68
  44. data/lib/csspool/lib_croco/cr_additional_sel.rb +0 -46
  45. data/lib/csspool/lib_croco/cr_attr_sel.rb +0 -16
  46. data/lib/csspool/lib_croco/cr_doc_handler.rb +0 -24
  47. data/lib/csspool/lib_croco/cr_num.rb +0 -13
  48. data/lib/csspool/lib_croco/cr_parser.rb +0 -11
  49. data/lib/csspool/lib_croco/cr_parsing_location.rb +0 -17
  50. data/lib/csspool/lib_croco/cr_pseudo.rb +0 -14
  51. data/lib/csspool/lib_croco/cr_rgb.rb +0 -18
  52. data/lib/csspool/lib_croco/cr_selector.rb +0 -34
  53. data/lib/csspool/lib_croco/cr_simple_sel.rb +0 -54
  54. data/lib/csspool/lib_croco/cr_term.rb +0 -97
  55. data/lib/csspool/lib_croco/glist.rb +0 -21
  56. data/lib/csspool/lib_croco.rb +0 -78
  57. data/lib/csspool/visitable.rb +0 -18
@@ -0,0 +1,1090 @@
1
+ #
2
+ # DO NOT MODIFY!!!!
3
+ # This file is automatically generated by Racc 1.4.7
4
+ # from Racc grammer file "".
5
+ #
6
+
7
+ require 'racc/parser.rb'
8
+ module CSSPool
9
+ module CSS
10
+ class Parser < Racc::Parser
11
+
12
+ module_eval(<<'...end parser.y/module_eval...', 'parser.y', 312)
13
+
14
+ def numeric thing
15
+ thing = thing.gsub(/[^\d.]/, '')
16
+ Integer(thing) rescue Float(thing)
17
+ end
18
+
19
+ def interpret_identifier s
20
+ interpret_escapes s
21
+ end
22
+
23
+ def interpret_uri s
24
+ interpret_escapes s.match(/^url\((.*)\)$/mu)[1].strip.match(/^(['"]?)((?:\\.|.)*)\1$/mu)[2]
25
+ end
26
+
27
+ def interpret_string s
28
+ interpret_escapes s.match(/^(['"])((?:\\.|.)*)\1$/mu)[2]
29
+ end
30
+
31
+ def interpret_escapes s
32
+ token_exp = /\\([0-9a-fA-F]{1,6}(?:\r\n|\s)?)|\\(.)|(.)/mu
33
+ characters = s.scan(token_exp).map do |u_escape, i_escape, ident|
34
+ if u_escape
35
+ code = u_escape.chomp.to_i 16
36
+ code = 0xFFFD if code > 0x10FFFF
37
+ [code].pack('U')
38
+ elsif i_escape
39
+ if i_escape == "\n"
40
+ ''
41
+ else
42
+ i_escape
43
+ end
44
+ else
45
+ ident
46
+ end
47
+ end.join ''
48
+ end
49
+ ...end parser.y/module_eval...
50
+ ##### State transition tables begin ###
51
+
52
+ racc_action_table = [
53
+ 13, 17, 41, 51, 22, 25, 60, 55, 121, 4,
54
+ 6, 9, 13, 17, 79, 42, 22, 25, 83, 61,
55
+ 62, 4, 6, 9, 46, 34, 13, 17, 35, 51,
56
+ 22, 25, 8, 10, 14, 4, 6, 9, 77, 72,
57
+ 6, 9, 22, 25, 8, 10, 14, 4, 6, 9,
58
+ 22, 73, 47, 65, 66, 4, 6, 9, 8, 10,
59
+ 14, 22, 25, 10, 14, 71, 4, 6, 9, 22,
60
+ 25, 10, 14, 90, 4, 6, 9, 22, 25, 10,
61
+ 14, 22, 4, 6, 9, 58, 4, 6, 9, 8,
62
+ 10, 14, 56, 91, 6, 9, 65, 8, 10, 14,
63
+ 117, 6, 9, 118, 119, 8, 10, 14, 120, 80,
64
+ 10, 14, 101, 86, 105, 87, 126, 10, 14, 122,
65
+ 94, 6, 9, 124, 10, 14, 84, 112, 85, 115,
66
+ 123, 93, 96, 98, 100, 103, 106, 108, 111, 114,
67
+ 116, 101, 40, 105, 10, 14, 75, 34, 76, 94,
68
+ 6, 9, 67, 68, 69, 70, 112, 88, 115, 89,
69
+ 93, 96, 98, 100, 103, 106, 108, 111, 114, 116,
70
+ 101, 128, 105, 10, 14, 129, 130, 131, 94, 132,
71
+ 37, 36, 31, 136, 3, 112, 136, 115, 140, 93,
72
+ 96, 98, 100, 103, 106, 108, 111, 114, 116, 101,
73
+ 141, 105, 110, 142, nil, nil, nil, 94, nil, nil,
74
+ nil, nil, nil, nil, 112, nil, 115, nil, 93, 96,
75
+ 98, 100, 103, 106, 108, 111, 114, 116, 101, nil,
76
+ 105, nil, nil, nil, nil, nil, 94, nil, nil, nil,
77
+ nil, nil, nil, 112, nil, 115, nil, 93, 96, 98,
78
+ 100, 103, 106, 108, 111, 114, 116, 115, nil, 93,
79
+ 96, 98, 100, 103, 106, 108, 111, 114 ]
80
+
81
+ racc_action_check = [
82
+ 2, 2, 14, 21, 2, 2, 28, 21, 88, 2,
83
+ 2, 2, 27, 27, 53, 14, 27, 27, 65, 28,
84
+ 28, 27, 27, 27, 17, 8, 29, 29, 8, 52,
85
+ 29, 29, 2, 2, 2, 29, 29, 29, 49, 42,
86
+ 5, 5, 25, 25, 27, 27, 27, 25, 25, 25,
87
+ 63, 42, 17, 33, 33, 63, 63, 63, 29, 29,
88
+ 29, 12, 12, 5, 5, 40, 12, 12, 12, 19,
89
+ 19, 25, 25, 72, 19, 19, 19, 16, 16, 63,
90
+ 63, 58, 16, 16, 16, 26, 58, 58, 58, 12,
91
+ 12, 12, 24, 74, 18, 18, 74, 19, 19, 19,
92
+ 84, 15, 15, 85, 86, 16, 16, 16, 87, 54,
93
+ 58, 58, 92, 69, 92, 69, 92, 18, 18, 89,
94
+ 92, 11, 11, 92, 15, 15, 68, 92, 68, 92,
95
+ 92, 92, 92, 92, 92, 92, 92, 92, 92, 92,
96
+ 92, 127, 13, 127, 11, 11, 45, 45, 45, 127,
97
+ 20, 20, 36, 36, 36, 36, 127, 70, 127, 70,
98
+ 127, 127, 127, 127, 127, 127, 127, 127, 127, 127,
99
+ 112, 95, 112, 20, 20, 99, 102, 104, 112, 107,
100
+ 10, 9, 3, 113, 1, 112, 134, 112, 135, 112,
101
+ 112, 112, 112, 112, 112, 112, 112, 112, 112, 80,
102
+ 137, 80, 80, 139, nil, nil, nil, 80, nil, nil,
103
+ nil, nil, nil, nil, 80, nil, 80, nil, 80, 80,
104
+ 80, 80, 80, 80, 80, 80, 80, 80, 110, nil,
105
+ 110, nil, nil, nil, nil, nil, 110, nil, nil, nil,
106
+ nil, nil, nil, 110, nil, 110, nil, 110, 110, 110,
107
+ 110, 110, 110, 110, 110, 110, 110, 109, nil, 109,
108
+ 109, 109, 109, 109, 109, 109, 109, 109 ]
109
+
110
+ racc_action_pointer = [
111
+ nil, 184, -2, 182, nil, 28, nil, nil, 19, 175,
112
+ 174, 109, 55, 138, -4, 89, 71, 20, 82, 63,
113
+ 138, -3, nil, nil, 83, 36, 77, 10, -1, 24,
114
+ nil, nil, nil, 45, nil, nil, 138, nil, nil, nil,
115
+ 60, nil, 33, nil, nil, 141, nil, nil, nil, 28,
116
+ nil, nil, 23, 4, 73, nil, nil, nil, 75, nil,
117
+ nil, nil, nil, 44, nil, 12, nil, nil, 122, 109,
118
+ 153, nil, 55, nil, 88, nil, nil, nil, nil, nil,
119
+ 195, nil, nil, nil, 86, 89, 90, 94, -6, 105,
120
+ nil, nil, 108, nil, nil, 164, nil, nil, nil, 168,
121
+ nil, nil, 169, nil, 170, nil, nil, 172, nil, 236,
122
+ 224, nil, 166, 150, nil, nil, nil, nil, nil, nil,
123
+ nil, nil, nil, nil, nil, nil, nil, 137, nil, nil,
124
+ nil, nil, nil, nil, 153, 170, nil, 195, nil, 198,
125
+ nil, nil, nil ]
126
+
127
+ racc_action_default = [
128
+ -1, -99, -99, -99, -38, -35, -47, -36, -99, -99,
129
+ -99, -39, -18, -99, -99, -40, -19, -99, -41, -99,
130
+ -42, -99, -37, -2, -99, -99, -28, -5, -30, -6,
131
+ -7, 143, -34, -99, -15, -22, -99, -48, -43, -16,
132
+ -99, -56, -99, -44, -17, -99, -12, -13, -45, -99,
133
+ -46, -65, -60, -99, -99, -24, -26, -25, -99, -3,
134
+ -31, -32, -33, -99, -4, -99, -21, -55, -99, -99,
135
+ -99, -8, -99, -57, -99, -10, -11, -20, -59, -23,
136
+ -99, -27, -29, -14, -99, -99, -99, -99, -99, -99,
137
+ -58, -9, -71, -87, -81, -72, -95, -73, -89, -74,
138
+ -88, -85, -75, -90, -76, -98, -91, -77, -92, -99,
139
+ -99, -93, -99, -64, -94, -96, -83, -50, -49, -51,
140
+ -52, -54, -53, -67, -68, -70, -66, -99, -97, -84,
141
+ -82, -80, -78, -86, -64, -99, -63, -99, -69, -99,
142
+ -79, -61, -62 ]
143
+
144
+ racc_goto_table = [
145
+ 113, 33, 53, 137, 23, 32, 39, 81, 57, 82,
146
+ 44, 38, 125, 49, 63, 43, 45, 2, 48, 1,
147
+ 50, 127, 133, nil, 139, nil, nil, nil, nil, 59,
148
+ 134, 64, 135, 78, nil, nil, nil, nil, 74, nil,
149
+ nil, nil, nil, nil, nil, nil, nil, 138 ]
150
+
151
+ racc_goto_check = [
152
+ 26, 8, 13, 27, 2, 19, 6, 14, 12, 15,
153
+ 6, 19, 26, 6, 17, 19, 7, 3, 19, 1,
154
+ 19, 28, 31, nil, 27, nil, nil, nil, nil, 2,
155
+ 26, 2, 26, 13, nil, nil, nil, nil, 8, nil,
156
+ nil, nil, nil, nil, nil, nil, nil, 26 ]
157
+
158
+ racc_goto_pointer = [
159
+ nil, 19, 2, 17, nil, nil, -6, -1, -7, nil,
160
+ nil, nil, -17, -19, -51, -54, nil, -14, nil, 0,
161
+ nil, nil, nil, nil, nil, nil, -80, -110, -71, nil,
162
+ nil, -87, nil, nil, nil, nil, nil ]
163
+
164
+ racc_goto_default = [
165
+ nil, nil, nil, nil, 27, 29, 30, nil, nil, 12,
166
+ 16, 19, 21, nil, 24, 26, 28, nil, 5, 7,
167
+ 11, 15, 18, 20, 52, 54, nil, nil, nil, 92,
168
+ 95, 97, 99, 102, 104, 107, 109 ]
169
+
170
+ racc_reduce_table = [
171
+ 0, 0, :racc_error,
172
+ 0, 40, :_reduce_1,
173
+ 2, 38, :_reduce_2,
174
+ 2, 39, :_reduce_none,
175
+ 2, 39, :_reduce_none,
176
+ 1, 39, :_reduce_none,
177
+ 1, 39, :_reduce_none,
178
+ 1, 39, :_reduce_none,
179
+ 3, 41, :_reduce_8,
180
+ 4, 42, :_reduce_9,
181
+ 3, 42, :_reduce_10,
182
+ 2, 44, :_reduce_none,
183
+ 1, 44, :_reduce_12,
184
+ 1, 44, :_reduce_13,
185
+ 3, 45, :_reduce_14,
186
+ 1, 45, :_reduce_15,
187
+ 2, 43, :_reduce_none,
188
+ 2, 43, :_reduce_none,
189
+ 1, 43, :_reduce_none,
190
+ 1, 43, :_reduce_none,
191
+ 3, 47, :_reduce_20,
192
+ 3, 48, :_reduce_21,
193
+ 2, 48, :_reduce_22,
194
+ 3, 46, :_reduce_23,
195
+ 2, 46, :_reduce_24,
196
+ 2, 49, :_reduce_25,
197
+ 2, 49, :_reduce_26,
198
+ 3, 51, :_reduce_27,
199
+ 1, 51, :_reduce_28,
200
+ 3, 52, :_reduce_29,
201
+ 1, 52, :_reduce_none,
202
+ 1, 54, :_reduce_31,
203
+ 1, 54, :_reduce_32,
204
+ 1, 54, :_reduce_33,
205
+ 2, 53, :_reduce_34,
206
+ 1, 53, :_reduce_35,
207
+ 1, 53, :_reduce_36,
208
+ 1, 55, :_reduce_37,
209
+ 1, 55, :_reduce_38,
210
+ 1, 56, :_reduce_39,
211
+ 1, 56, :_reduce_40,
212
+ 1, 56, :_reduce_41,
213
+ 1, 56, :_reduce_42,
214
+ 2, 56, :_reduce_43,
215
+ 2, 56, :_reduce_44,
216
+ 2, 56, :_reduce_45,
217
+ 2, 56, :_reduce_46,
218
+ 1, 57, :_reduce_47,
219
+ 2, 58, :_reduce_48,
220
+ 5, 59, :_reduce_49,
221
+ 5, 59, :_reduce_50,
222
+ 5, 59, :_reduce_51,
223
+ 5, 59, :_reduce_52,
224
+ 5, 59, :_reduce_53,
225
+ 5, 59, :_reduce_54,
226
+ 3, 59, :_reduce_55,
227
+ 2, 60, :_reduce_56,
228
+ 3, 60, :_reduce_57,
229
+ 4, 60, :_reduce_58,
230
+ 2, 50, :_reduce_none,
231
+ 1, 50, :_reduce_none,
232
+ 5, 61, :_reduce_61,
233
+ 6, 61, :_reduce_62,
234
+ 1, 64, :_reduce_63,
235
+ 0, 64, :_reduce_64,
236
+ 1, 62, :_reduce_65,
237
+ 1, 65, :_reduce_none,
238
+ 1, 65, :_reduce_none,
239
+ 1, 65, :_reduce_none,
240
+ 3, 63, :_reduce_69,
241
+ 2, 63, :_reduce_70,
242
+ 1, 63, :_reduce_71,
243
+ 1, 66, :_reduce_none,
244
+ 1, 66, :_reduce_none,
245
+ 1, 66, :_reduce_none,
246
+ 1, 66, :_reduce_none,
247
+ 1, 66, :_reduce_none,
248
+ 1, 66, :_reduce_none,
249
+ 2, 72, :_reduce_78,
250
+ 3, 72, :_reduce_79,
251
+ 2, 71, :_reduce_80,
252
+ 1, 71, :_reduce_81,
253
+ 2, 70, :_reduce_82,
254
+ 1, 70, :_reduce_83,
255
+ 2, 69, :_reduce_84,
256
+ 1, 69, :_reduce_85,
257
+ 2, 68, :_reduce_86,
258
+ 1, 68, :_reduce_87,
259
+ 1, 68, :_reduce_88,
260
+ 1, 68, :_reduce_89,
261
+ 1, 68, :_reduce_90,
262
+ 1, 68, :_reduce_91,
263
+ 1, 68, :_reduce_92,
264
+ 1, 68, :_reduce_93,
265
+ 1, 68, :_reduce_94,
266
+ 1, 73, :_reduce_95,
267
+ 1, 73, :_reduce_96,
268
+ 2, 67, :_reduce_97,
269
+ 1, 67, :_reduce_98 ]
270
+
271
+ racc_reduce_n = 99
272
+
273
+ racc_shift_n = 143
274
+
275
+ racc_token_table = {
276
+ false => 0,
277
+ :error => 1,
278
+ :CHARSET_SYM => 2,
279
+ :IMPORT_SYM => 3,
280
+ :STRING => 4,
281
+ :SEMI => 5,
282
+ :IDENT => 6,
283
+ :S => 7,
284
+ :COMMA => 8,
285
+ :LBRACE => 9,
286
+ :RBRACE => 10,
287
+ :STAR => 11,
288
+ :HASH => 12,
289
+ :LSQUARE => 13,
290
+ :RSQUARE => 14,
291
+ :EQUAL => 15,
292
+ :INCLUDES => 16,
293
+ :DASHMATCH => 17,
294
+ :RPAREN => 18,
295
+ :FUNCTION => 19,
296
+ :GREATER => 20,
297
+ :PLUS => 21,
298
+ :SLASH => 22,
299
+ :NUMBER => 23,
300
+ :MINUS => 24,
301
+ :LENGTH => 25,
302
+ :PERCENTAGE => 26,
303
+ :EMS => 27,
304
+ :EXS => 28,
305
+ :ANGLE => 29,
306
+ :TIME => 30,
307
+ :FREQ => 31,
308
+ :URI => 32,
309
+ :IMPORTANT_SYM => 33,
310
+ :MEDIA_SYM => 34,
311
+ "." => 35,
312
+ ":" => 36 }
313
+
314
+ racc_nt_base = 37
315
+
316
+ racc_use_result_var = true
317
+
318
+ Racc_arg = [
319
+ racc_action_table,
320
+ racc_action_check,
321
+ racc_action_default,
322
+ racc_action_pointer,
323
+ racc_goto_table,
324
+ racc_goto_check,
325
+ racc_goto_default,
326
+ racc_goto_pointer,
327
+ racc_nt_base,
328
+ racc_reduce_table,
329
+ racc_token_table,
330
+ racc_shift_n,
331
+ racc_reduce_n,
332
+ racc_use_result_var ]
333
+
334
+ Racc_token_to_s_table = [
335
+ "$end",
336
+ "error",
337
+ "CHARSET_SYM",
338
+ "IMPORT_SYM",
339
+ "STRING",
340
+ "SEMI",
341
+ "IDENT",
342
+ "S",
343
+ "COMMA",
344
+ "LBRACE",
345
+ "RBRACE",
346
+ "STAR",
347
+ "HASH",
348
+ "LSQUARE",
349
+ "RSQUARE",
350
+ "EQUAL",
351
+ "INCLUDES",
352
+ "DASHMATCH",
353
+ "RPAREN",
354
+ "FUNCTION",
355
+ "GREATER",
356
+ "PLUS",
357
+ "SLASH",
358
+ "NUMBER",
359
+ "MINUS",
360
+ "LENGTH",
361
+ "PERCENTAGE",
362
+ "EMS",
363
+ "EXS",
364
+ "ANGLE",
365
+ "TIME",
366
+ "FREQ",
367
+ "URI",
368
+ "IMPORTANT_SYM",
369
+ "MEDIA_SYM",
370
+ "\".\"",
371
+ "\":\"",
372
+ "$start",
373
+ "document",
374
+ "stylesheet",
375
+ "@1",
376
+ "charset",
377
+ "import",
378
+ "body",
379
+ "import_location",
380
+ "medium",
381
+ "ruleset",
382
+ "media",
383
+ "start_media",
384
+ "start_selector",
385
+ "declarations",
386
+ "selectors",
387
+ "selector",
388
+ "simple_selector",
389
+ "combinator",
390
+ "element_name",
391
+ "hcap",
392
+ "hash",
393
+ "class",
394
+ "attrib",
395
+ "pseudo",
396
+ "declaration",
397
+ "property",
398
+ "expr",
399
+ "prio",
400
+ "operator",
401
+ "term",
402
+ "ident",
403
+ "numeric",
404
+ "string",
405
+ "uri",
406
+ "hexcolor",
407
+ "function",
408
+ "unary_operator" ]
409
+
410
+ Racc_debug_parser = false
411
+
412
+ ##### State transition tables end #####
413
+
414
+ # reduce 0 omitted
415
+
416
+ module_eval(<<'.,.,', 'parser.y', 9)
417
+ def _reduce_1(val, _values, result)
418
+ @handler.start_document
419
+ result
420
+ end
421
+ .,.,
422
+
423
+ module_eval(<<'.,.,', 'parser.y', 11)
424
+ def _reduce_2(val, _values, result)
425
+ @handler.end_document
426
+ result
427
+ end
428
+ .,.,
429
+
430
+ # reduce 3 omitted
431
+
432
+ # reduce 4 omitted
433
+
434
+ # reduce 5 omitted
435
+
436
+ # reduce 6 omitted
437
+
438
+ # reduce 7 omitted
439
+
440
+ module_eval(<<'.,.,', 'parser.y', 21)
441
+ def _reduce_8(val, _values, result)
442
+ @handler.charset interpret_string(val[1]), {}
443
+ result
444
+ end
445
+ .,.,
446
+
447
+ module_eval(<<'.,.,', 'parser.y', 25)
448
+ def _reduce_9(val, _values, result)
449
+ @handler.import_style [val[2]].flatten, val[1]
450
+
451
+ result
452
+ end
453
+ .,.,
454
+
455
+ module_eval(<<'.,.,', 'parser.y', 28)
456
+ def _reduce_10(val, _values, result)
457
+ @handler.import_style [], val[1]
458
+
459
+ result
460
+ end
461
+ .,.,
462
+
463
+ # reduce 11 omitted
464
+
465
+ module_eval(<<'.,.,', 'parser.y', 33)
466
+ def _reduce_12(val, _values, result)
467
+ result = Terms::String.new interpret_string val.first
468
+ result
469
+ end
470
+ .,.,
471
+
472
+ module_eval(<<'.,.,', 'parser.y', 34)
473
+ def _reduce_13(val, _values, result)
474
+ result = Terms::URI.new interpret_uri val.first
475
+ result
476
+ end
477
+ .,.,
478
+
479
+ module_eval(<<'.,.,', 'parser.y', 38)
480
+ def _reduce_14(val, _values, result)
481
+ result = [val.first, Terms::Ident.new(interpret_identifier val.last)]
482
+
483
+ result
484
+ end
485
+ .,.,
486
+
487
+ module_eval(<<'.,.,', 'parser.y', 41)
488
+ def _reduce_15(val, _values, result)
489
+ result = Terms::Ident.new interpret_identifier val.first
490
+
491
+ result
492
+ end
493
+ .,.,
494
+
495
+ # reduce 16 omitted
496
+
497
+ # reduce 17 omitted
498
+
499
+ # reduce 18 omitted
500
+
501
+ # reduce 19 omitted
502
+
503
+ module_eval(<<'.,.,', 'parser.y', 51)
504
+ def _reduce_20(val, _values, result)
505
+ @handler.end_media val.first
506
+ result
507
+ end
508
+ .,.,
509
+
510
+ module_eval(<<'.,.,', 'parser.y', 55)
511
+ def _reduce_21(val, _values, result)
512
+ result = [val[1]].flatten
513
+ @handler.start_media result
514
+
515
+ result
516
+ end
517
+ .,.,
518
+
519
+ module_eval(<<'.,.,', 'parser.y', 58)
520
+ def _reduce_22(val, _values, result)
521
+ result = []
522
+ result
523
+ end
524
+ .,.,
525
+
526
+ module_eval(<<'.,.,', 'parser.y', 62)
527
+ def _reduce_23(val, _values, result)
528
+ @handler.end_selector val.first
529
+
530
+ result
531
+ end
532
+ .,.,
533
+
534
+ module_eval(<<'.,.,', 'parser.y', 65)
535
+ def _reduce_24(val, _values, result)
536
+ @handler.end_selector val.first
537
+
538
+ result
539
+ end
540
+ .,.,
541
+
542
+ module_eval(<<'.,.,', 'parser.y', 69)
543
+ def _reduce_25(val, _values, result)
544
+ result = val.last
545
+ result
546
+ end
547
+ .,.,
548
+
549
+ module_eval(<<'.,.,', 'parser.y', 71)
550
+ def _reduce_26(val, _values, result)
551
+ @handler.start_selector val.first
552
+
553
+ result
554
+ end
555
+ .,.,
556
+
557
+ module_eval(<<'.,.,', 'parser.y', 77)
558
+ def _reduce_27(val, _values, result)
559
+ # FIXME: should always garantee array
560
+ sel = Selector.new(val.first, {})
561
+ result = [sel, val[2]].flatten
562
+
563
+ result
564
+ end
565
+ .,.,
566
+
567
+ module_eval(<<'.,.,', 'parser.y', 83)
568
+ def _reduce_28(val, _values, result)
569
+ result = [Selector.new(val.first, {})]
570
+
571
+ result
572
+ end
573
+ .,.,
574
+
575
+ module_eval(<<'.,.,', 'parser.y', 89)
576
+ def _reduce_29(val, _values, result)
577
+ val = val.flatten
578
+ val[2].combinator = val.delete_at 1
579
+ result = val
580
+
581
+ result
582
+ end
583
+ .,.,
584
+
585
+ # reduce 30 omitted
586
+
587
+ module_eval(<<'.,.,', 'parser.y', 96)
588
+ def _reduce_31(val, _values, result)
589
+ result = :s
590
+ result
591
+ end
592
+ .,.,
593
+
594
+ module_eval(<<'.,.,', 'parser.y', 97)
595
+ def _reduce_32(val, _values, result)
596
+ result = :>
597
+ result
598
+ end
599
+ .,.,
600
+
601
+ module_eval(<<'.,.,', 'parser.y', 98)
602
+ def _reduce_33(val, _values, result)
603
+ result = :+
604
+ result
605
+ end
606
+ .,.,
607
+
608
+ module_eval(<<'.,.,', 'parser.y', 102)
609
+ def _reduce_34(val, _values, result)
610
+ selector = val.first
611
+ selector.additional_selectors = val.last
612
+ result = [selector]
613
+
614
+ result
615
+ end
616
+ .,.,
617
+
618
+ module_eval(<<'.,.,', 'parser.y', 106)
619
+ def _reduce_35(val, _values, result)
620
+ result = val
621
+ result
622
+ end
623
+ .,.,
624
+
625
+ module_eval(<<'.,.,', 'parser.y', 109)
626
+ def _reduce_36(val, _values, result)
627
+ ss = Selectors::Simple.new nil, nil
628
+ ss.additional_selectors = val.flatten
629
+ result = [ss]
630
+
631
+ result
632
+ end
633
+ .,.,
634
+
635
+ module_eval(<<'.,.,', 'parser.y', 115)
636
+ def _reduce_37(val, _values, result)
637
+ result = Selectors::Type.new interpret_identifier val.first
638
+ result
639
+ end
640
+ .,.,
641
+
642
+ module_eval(<<'.,.,', 'parser.y', 116)
643
+ def _reduce_38(val, _values, result)
644
+ result = Selectors::Universal.new val.first
645
+ result
646
+ end
647
+ .,.,
648
+
649
+ module_eval(<<'.,.,', 'parser.y', 119)
650
+ def _reduce_39(val, _values, result)
651
+ result = val
652
+ result
653
+ end
654
+ .,.,
655
+
656
+ module_eval(<<'.,.,', 'parser.y', 120)
657
+ def _reduce_40(val, _values, result)
658
+ result = val
659
+ result
660
+ end
661
+ .,.,
662
+
663
+ module_eval(<<'.,.,', 'parser.y', 121)
664
+ def _reduce_41(val, _values, result)
665
+ result = val
666
+ result
667
+ end
668
+ .,.,
669
+
670
+ module_eval(<<'.,.,', 'parser.y', 122)
671
+ def _reduce_42(val, _values, result)
672
+ result = val
673
+ result
674
+ end
675
+ .,.,
676
+
677
+ module_eval(<<'.,.,', 'parser.y', 123)
678
+ def _reduce_43(val, _values, result)
679
+ result = val.flatten
680
+ result
681
+ end
682
+ .,.,
683
+
684
+ module_eval(<<'.,.,', 'parser.y', 124)
685
+ def _reduce_44(val, _values, result)
686
+ result = val.flatten
687
+ result
688
+ end
689
+ .,.,
690
+
691
+ module_eval(<<'.,.,', 'parser.y', 125)
692
+ def _reduce_45(val, _values, result)
693
+ result = val.flatten
694
+ result
695
+ end
696
+ .,.,
697
+
698
+ module_eval(<<'.,.,', 'parser.y', 126)
699
+ def _reduce_46(val, _values, result)
700
+ result = val.flatten
701
+ result
702
+ end
703
+ .,.,
704
+
705
+ module_eval(<<'.,.,', 'parser.y', 130)
706
+ def _reduce_47(val, _values, result)
707
+ result = Selectors::Id.new interpret_identifier val.first.sub(/^#/, '')
708
+
709
+ result
710
+ end
711
+ .,.,
712
+
713
+ module_eval(<<'.,.,', 'parser.y', 134)
714
+ def _reduce_48(val, _values, result)
715
+ result = Selectors::Class.new interpret_identifier val.last
716
+
717
+ result
718
+ end
719
+ .,.,
720
+
721
+ module_eval(<<'.,.,', 'parser.y', 139)
722
+ def _reduce_49(val, _values, result)
723
+ result = Selectors::Attribute.new(
724
+ interpret_identifier(val[1]),
725
+ interpret_identifier(val[3]),
726
+ Selectors::Attribute::EQUALS
727
+ )
728
+
729
+ result
730
+ end
731
+ .,.,
732
+
733
+ module_eval(<<'.,.,', 'parser.y', 146)
734
+ def _reduce_50(val, _values, result)
735
+ result = Selectors::Attribute.new(
736
+ interpret_identifier(val[1]),
737
+ interpret_string(val[3]),
738
+ Selectors::Attribute::EQUALS
739
+ )
740
+
741
+ result
742
+ end
743
+ .,.,
744
+
745
+ module_eval(<<'.,.,', 'parser.y', 153)
746
+ def _reduce_51(val, _values, result)
747
+ result = Selectors::Attribute.new(
748
+ interpret_identifier(val[1]),
749
+ interpret_string(val[3]),
750
+ Selectors::Attribute::INCLUDES
751
+ )
752
+
753
+ result
754
+ end
755
+ .,.,
756
+
757
+ module_eval(<<'.,.,', 'parser.y', 160)
758
+ def _reduce_52(val, _values, result)
759
+ result = Selectors::Attribute.new(
760
+ interpret_identifier(val[1]),
761
+ interpret_identifier(val[3]),
762
+ Selectors::Attribute::INCLUDES
763
+ )
764
+
765
+ result
766
+ end
767
+ .,.,
768
+
769
+ module_eval(<<'.,.,', 'parser.y', 167)
770
+ def _reduce_53(val, _values, result)
771
+ result = Selectors::Attribute.new(
772
+ interpret_identifier(val[1]),
773
+ interpret_identifier(val[3]),
774
+ Selectors::Attribute::DASHMATCH
775
+ )
776
+
777
+ result
778
+ end
779
+ .,.,
780
+
781
+ module_eval(<<'.,.,', 'parser.y', 174)
782
+ def _reduce_54(val, _values, result)
783
+ result = Selectors::Attribute.new(
784
+ interpret_identifier(val[1]),
785
+ interpret_string(val[3]),
786
+ Selectors::Attribute::DASHMATCH
787
+ )
788
+
789
+ result
790
+ end
791
+ .,.,
792
+
793
+ module_eval(<<'.,.,', 'parser.y', 181)
794
+ def _reduce_55(val, _values, result)
795
+ result = Selectors::Attribute.new(
796
+ interpret_identifier(val[1]),
797
+ nil,
798
+ Selectors::Attribute::SET
799
+ )
800
+
801
+ result
802
+ end
803
+ .,.,
804
+
805
+ module_eval(<<'.,.,', 'parser.y', 190)
806
+ def _reduce_56(val, _values, result)
807
+ result = Selectors::PseudoClass.new(
808
+ interpret_identifier(val[1])
809
+ )
810
+
811
+ result
812
+ end
813
+ .,.,
814
+
815
+ module_eval(<<'.,.,', 'parser.y', 195)
816
+ def _reduce_57(val, _values, result)
817
+ result = Selectors::PseudoClass.new(
818
+ interpret_identifier(val[1].sub(/\($/, '')),
819
+ ''
820
+ )
821
+
822
+ result
823
+ end
824
+ .,.,
825
+
826
+ module_eval(<<'.,.,', 'parser.y', 201)
827
+ def _reduce_58(val, _values, result)
828
+ result = Selectors::PseudoClass.new(
829
+ interpret_identifier(val[1].sub(/\($/, '')),
830
+ interpret_identifier(val[2])
831
+ )
832
+
833
+ result
834
+ end
835
+ .,.,
836
+
837
+ # reduce 59 omitted
838
+
839
+ # reduce 60 omitted
840
+
841
+ module_eval(<<'.,.,', 'parser.y', 213)
842
+ def _reduce_61(val, _values, result)
843
+ @handler.property val.first, val[2], val[3]
844
+ result
845
+ end
846
+ .,.,
847
+
848
+ module_eval(<<'.,.,', 'parser.y', 215)
849
+ def _reduce_62(val, _values, result)
850
+ @handler.property val.first, val[3], val[4]
851
+ result
852
+ end
853
+ .,.,
854
+
855
+ module_eval(<<'.,.,', 'parser.y', 218)
856
+ def _reduce_63(val, _values, result)
857
+ result = true
858
+ result
859
+ end
860
+ .,.,
861
+
862
+ module_eval(<<'.,.,', 'parser.y', 219)
863
+ def _reduce_64(val, _values, result)
864
+ result = false
865
+ result
866
+ end
867
+ .,.,
868
+
869
+ module_eval(<<'.,.,', 'parser.y', 222)
870
+ def _reduce_65(val, _values, result)
871
+ result = interpret_identifier val[0]
872
+ result
873
+ end
874
+ .,.,
875
+
876
+ # reduce 66 omitted
877
+
878
+ # reduce 67 omitted
879
+
880
+ # reduce 68 omitted
881
+
882
+ module_eval(<<'.,.,', 'parser.y', 231)
883
+ def _reduce_69(val, _values, result)
884
+ result = [val.first, val.last].flatten
885
+ val.last.first.operator = val[1]
886
+
887
+ result
888
+ end
889
+ .,.,
890
+
891
+ module_eval(<<'.,.,', 'parser.y', 234)
892
+ def _reduce_70(val, _values, result)
893
+ result = val.flatten
894
+ result
895
+ end
896
+ .,.,
897
+
898
+ module_eval(<<'.,.,', 'parser.y', 235)
899
+ def _reduce_71(val, _values, result)
900
+ result = val
901
+ result
902
+ end
903
+ .,.,
904
+
905
+ # reduce 72 omitted
906
+
907
+ # reduce 73 omitted
908
+
909
+ # reduce 74 omitted
910
+
911
+ # reduce 75 omitted
912
+
913
+ # reduce 76 omitted
914
+
915
+ # reduce 77 omitted
916
+
917
+ module_eval(<<'.,.,', 'parser.y', 246)
918
+ def _reduce_78(val, _values, result)
919
+ result = val.first
920
+ result
921
+ end
922
+ .,.,
923
+
924
+ module_eval(<<'.,.,', 'parser.y', 248)
925
+ def _reduce_79(val, _values, result)
926
+ name = interpret_identifier val.first.sub(/\($/, '')
927
+ if name == 'rgb'
928
+ result = Terms::Rgb.new(*val[1])
929
+ else
930
+ result = Terms::Function.new name, val[1]
931
+ end
932
+
933
+ result
934
+ end
935
+ .,.,
936
+
937
+ module_eval(<<'.,.,', 'parser.y', 257)
938
+ def _reduce_80(val, _values, result)
939
+ result = val.first
940
+ result
941
+ end
942
+ .,.,
943
+
944
+ module_eval(<<'.,.,', 'parser.y', 258)
945
+ def _reduce_81(val, _values, result)
946
+ result = Terms::Hash.new val.first.sub(/^#/, '')
947
+ result
948
+ end
949
+ .,.,
950
+
951
+ module_eval(<<'.,.,', 'parser.y', 261)
952
+ def _reduce_82(val, _values, result)
953
+ result = val.first
954
+ result
955
+ end
956
+ .,.,
957
+
958
+ module_eval(<<'.,.,', 'parser.y', 262)
959
+ def _reduce_83(val, _values, result)
960
+ result = Terms::URI.new interpret_uri val.first
961
+ result
962
+ end
963
+ .,.,
964
+
965
+ module_eval(<<'.,.,', 'parser.y', 264)
966
+ def _reduce_84(val, _values, result)
967
+ result = val.first
968
+ result
969
+ end
970
+ .,.,
971
+
972
+ module_eval(<<'.,.,', 'parser.y', 265)
973
+ def _reduce_85(val, _values, result)
974
+ result = Terms::String.new interpret_string val.first
975
+ result
976
+ end
977
+ .,.,
978
+
979
+ module_eval(<<'.,.,', 'parser.y', 269)
980
+ def _reduce_86(val, _values, result)
981
+ result = val[1]
982
+ val[1].unary_operator = val.first
983
+
984
+ result
985
+ end
986
+ .,.,
987
+
988
+ module_eval(<<'.,.,', 'parser.y', 273)
989
+ def _reduce_87(val, _values, result)
990
+ result = Terms::Number.new numeric val.first
991
+
992
+ result
993
+ end
994
+ .,.,
995
+
996
+ module_eval(<<'.,.,', 'parser.y', 276)
997
+ def _reduce_88(val, _values, result)
998
+ result = Terms::Number.new numeric(val.first), nil, '%'
999
+
1000
+ result
1001
+ end
1002
+ .,.,
1003
+
1004
+ module_eval(<<'.,.,', 'parser.y', 279)
1005
+ def _reduce_89(val, _values, result)
1006
+ unit = val.first.gsub(/[\s\d.]/, '')
1007
+ result = Terms::Number.new numeric(val.first), nil, unit
1008
+
1009
+ result
1010
+ end
1011
+ .,.,
1012
+
1013
+ module_eval(<<'.,.,', 'parser.y', 283)
1014
+ def _reduce_90(val, _values, result)
1015
+ result = Terms::Number.new numeric(val.first), nil, 'em'
1016
+
1017
+ result
1018
+ end
1019
+ .,.,
1020
+
1021
+ module_eval(<<'.,.,', 'parser.y', 286)
1022
+ def _reduce_91(val, _values, result)
1023
+ result = Terms::Number.new numeric(val.first), nil, 'ex'
1024
+
1025
+ result
1026
+ end
1027
+ .,.,
1028
+
1029
+ module_eval(<<'.,.,', 'parser.y', 289)
1030
+ def _reduce_92(val, _values, result)
1031
+ unit = val.first.gsub(/[\s\d.]/, '')
1032
+ result = Terms::Number.new numeric(val.first), nil, unit
1033
+
1034
+ result
1035
+ end
1036
+ .,.,
1037
+
1038
+ module_eval(<<'.,.,', 'parser.y', 293)
1039
+ def _reduce_93(val, _values, result)
1040
+ unit = val.first.gsub(/[\s\d.]/, '')
1041
+ result = Terms::Number.new numeric(val.first), nil, unit
1042
+
1043
+ result
1044
+ end
1045
+ .,.,
1046
+
1047
+ module_eval(<<'.,.,', 'parser.y', 297)
1048
+ def _reduce_94(val, _values, result)
1049
+ unit = val.first.gsub(/[\s\d.]/, '')
1050
+ result = Terms::Number.new numeric(val.first), nil, unit
1051
+
1052
+ result
1053
+ end
1054
+ .,.,
1055
+
1056
+ module_eval(<<'.,.,', 'parser.y', 302)
1057
+ def _reduce_95(val, _values, result)
1058
+ result = :minus
1059
+ result
1060
+ end
1061
+ .,.,
1062
+
1063
+ module_eval(<<'.,.,', 'parser.y', 303)
1064
+ def _reduce_96(val, _values, result)
1065
+ result = :plus
1066
+ result
1067
+ end
1068
+ .,.,
1069
+
1070
+ module_eval(<<'.,.,', 'parser.y', 306)
1071
+ def _reduce_97(val, _values, result)
1072
+ result = val.first
1073
+ result
1074
+ end
1075
+ .,.,
1076
+
1077
+ module_eval(<<'.,.,', 'parser.y', 307)
1078
+ def _reduce_98(val, _values, result)
1079
+ result = Terms::Ident.new interpret_identifier val.first
1080
+ result
1081
+ end
1082
+ .,.,
1083
+
1084
+ def _reduce_none(val, _values, result)
1085
+ val[0]
1086
+ end
1087
+
1088
+ end # class Parser
1089
+ end # module CSS
1090
+ end # module CSSPool