csspool 2.0.0 → 3.0.0

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.
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