csspool 3.0.1 → 3.0.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.
- data/CHANGELOG.rdoc +10 -0
- data/Gemfile +16 -0
- data/Gemfile.lock +29 -0
- data/Manifest.txt +3 -0
- data/lib/csspool/css/document.rb +7 -0
- data/lib/csspool/css/parser.rb +197 -189
- data/lib/csspool/css/parser.y +1 -0
- data/lib/csspool.rb +1 -1
- data/test/css/test_document.rb +9 -2
- data/test/css/test_parser.rb +19 -0
- data/test/files/test.css +7 -0
- metadata +121 -80
data/CHANGELOG.rdoc
CHANGED
data/Gemfile
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
# -*- ruby -*-
|
2
|
+
|
3
|
+
# DO NOT EDIT THIS FILE. Instead, edit Rakefile, and run `rake bundler:gemfile`.
|
4
|
+
|
5
|
+
source :gemcutter
|
6
|
+
|
7
|
+
|
8
|
+
gem "rdoc", "~>3.10", :group => [:development, :test]
|
9
|
+
gem "racc", ">=0", :group => [:development, :test]
|
10
|
+
gem "rexical", ">=0", :group => [:development, :test]
|
11
|
+
gem "hoe-git", ">=0", :group => [:development, :test]
|
12
|
+
gem "hoe-gemspec", ">=0", :group => [:development, :test]
|
13
|
+
gem "hoe-bundler", ">=0", :group => [:development, :test]
|
14
|
+
gem "hoe", "~>3.0", :group => [:development, :test]
|
15
|
+
|
16
|
+
# vim: syntax=ruby
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,29 @@
|
|
1
|
+
GEM
|
2
|
+
remote: http://rubygems.org/
|
3
|
+
specs:
|
4
|
+
hoe (3.1.0)
|
5
|
+
rake (~> 0.8)
|
6
|
+
hoe-bundler (1.2.0)
|
7
|
+
hoe (>= 2.2.0)
|
8
|
+
hoe-gemspec (1.0.0)
|
9
|
+
hoe (>= 2.2.0)
|
10
|
+
hoe-git (1.5.0)
|
11
|
+
hoe (>= 2.2.0)
|
12
|
+
json (1.7.5)
|
13
|
+
racc (1.4.9)
|
14
|
+
rake (0.9.2.2)
|
15
|
+
rdoc (3.12)
|
16
|
+
json (~> 1.4)
|
17
|
+
rexical (1.0.5)
|
18
|
+
|
19
|
+
PLATFORMS
|
20
|
+
ruby
|
21
|
+
|
22
|
+
DEPENDENCIES
|
23
|
+
hoe (~> 3.0)
|
24
|
+
hoe-bundler
|
25
|
+
hoe-gemspec
|
26
|
+
hoe-git
|
27
|
+
racc
|
28
|
+
rdoc (~> 3.10)
|
29
|
+
rexical
|
data/Manifest.txt
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
.autotest
|
2
2
|
CHANGELOG.rdoc
|
3
|
+
Gemfile
|
4
|
+
Gemfile.lock
|
3
5
|
Manifest.txt
|
4
6
|
README.rdoc
|
5
7
|
Rakefile
|
@@ -49,6 +51,7 @@ test/css/test_document.rb
|
|
49
51
|
test/css/test_import_rule.rb
|
50
52
|
test/css/test_parser.rb
|
51
53
|
test/css/test_tokenizer.rb
|
54
|
+
test/files/test.css
|
52
55
|
test/helper.rb
|
53
56
|
test/sac/test_parser.rb
|
54
57
|
test/sac/test_properties.rb
|
data/lib/csspool/css/document.rb
CHANGED
@@ -2,9 +2,16 @@ module CSSPool
|
|
2
2
|
module CSS
|
3
3
|
class Document < Node
|
4
4
|
def self.parse string
|
5
|
+
# If a File object gets passed in, via functions like File.open
|
6
|
+
# or Kernel::open
|
7
|
+
if string.respond_to? :read
|
8
|
+
string = string.read
|
9
|
+
end
|
10
|
+
|
5
11
|
unless string && string.length > 0
|
6
12
|
return CSSPool::CSS::Document.new
|
7
13
|
end
|
14
|
+
|
8
15
|
handler = CSSPool::CSS::DocumentHandler.new
|
9
16
|
parser = CSSPool::SAC::Parser.new(handler)
|
10
17
|
parser.parse(string)
|
data/lib/csspool/css/parser.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
#
|
2
2
|
# DO NOT MODIFY!!!!
|
3
|
-
# This file is automatically generated by Racc 1.4.
|
3
|
+
# This file is automatically generated by Racc 1.4.9
|
4
4
|
# from Racc grammer file "".
|
5
5
|
#
|
6
6
|
|
@@ -9,7 +9,7 @@ module CSSPool
|
|
9
9
|
module CSS
|
10
10
|
class Parser < Racc::Parser
|
11
11
|
|
12
|
-
module_eval(<<'...end parser.y/module_eval...', 'parser.y',
|
12
|
+
module_eval(<<'...end parser.y/module_eval...', 'parser.y', 318)
|
13
13
|
|
14
14
|
def numeric thing
|
15
15
|
thing = thing.gsub(/[^\d.]/, '')
|
@@ -50,138 +50,138 @@ end
|
|
50
50
|
##### State transition tables begin ###
|
51
51
|
|
52
52
|
racc_action_table = [
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
nil, nil, nil, nil,
|
77
|
-
|
78
|
-
|
79
|
-
nil, nil, nil,
|
80
|
-
|
81
|
-
|
82
|
-
nil, nil,
|
83
|
-
|
84
|
-
|
85
|
-
105, 106, 107, 108 ]
|
53
|
+
13, 17, 41, 52, 22, 25, 61, 56, 51, 4,
|
54
|
+
6, 9, 13, 17, 83, 42, 22, 25, 3, 62,
|
55
|
+
63, 4, 6, 9, 46, 94, 13, 17, 66, 81,
|
56
|
+
22, 25, 8, 10, 14, 4, 6, 9, 80, 73,
|
57
|
+
6, 9, 22, 82, 8, 10, 14, 4, 6, 9,
|
58
|
+
22, 74, 47, 66, 67, 4, 6, 9, 8, 10,
|
59
|
+
14, 22, 25, 10, 14, 93, 4, 6, 9, 22,
|
60
|
+
25, 10, 14, 79, 4, 6, 9, 22, 25, 10,
|
61
|
+
14, 78, 4, 6, 9, 6, 9, 22, 25, 8,
|
62
|
+
10, 14, 4, 6, 9, 52, 72, 8, 10, 14,
|
63
|
+
51, 34, 121, 105, 35, 109, 10, 14, 10, 14,
|
64
|
+
89, 98, 90, 6, 9, 8, 10, 14, 116, 91,
|
65
|
+
119, 92, 97, 100, 102, 104, 107, 110, 112, 115,
|
66
|
+
118, 120, 105, 122, 109, 143, 10, 14, 123, 87,
|
67
|
+
98, 88, 6, 9, 6, 9, 124, 116, 125, 119,
|
68
|
+
126, 97, 100, 102, 104, 107, 110, 112, 115, 118,
|
69
|
+
120, 105, 127, 109, 114, 10, 14, 10, 14, 98,
|
70
|
+
68, 69, 70, 71, 86, 133, 116, 134, 119, 135,
|
71
|
+
97, 100, 102, 104, 107, 110, 112, 115, 118, 120,
|
72
|
+
105, 136, 109, 76, 34, 77, 137, 59, 98, 57,
|
73
|
+
40, 141, 37, 36, 141, 116, 147, 119, 31, 97,
|
74
|
+
100, 102, 104, 107, 110, 112, 115, 118, 120, 105,
|
75
|
+
141, 109, 141, nil, nil, nil, nil, 98, nil, nil,
|
76
|
+
nil, nil, nil, nil, 116, nil, 119, nil, 97, 100,
|
77
|
+
102, 104, 107, 110, 112, 115, 118, 120, 105, nil,
|
78
|
+
109, nil, 131, nil, nil, nil, 98, nil, nil, 129,
|
79
|
+
nil, nil, nil, 116, nil, 119, 128, 97, 100, 102,
|
80
|
+
104, 107, 110, 112, 115, 118, 120, 105, nil, 109,
|
81
|
+
nil, nil, nil, nil, nil, 98, nil, nil, nil, nil,
|
82
|
+
nil, nil, 116, nil, 119, nil, 97, 100, 102, 104,
|
83
|
+
107, 110, 112, 115, 118, 120, 119, nil, 97, 100,
|
84
|
+
102, 104, 107, 110, 112, 115, 118 ]
|
86
85
|
|
87
86
|
racc_action_check = [
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
nil, nil, nil, nil,
|
112
|
-
|
113
|
-
|
114
|
-
nil, nil, nil,
|
115
|
-
|
116
|
-
|
117
|
-
nil, nil,
|
118
|
-
|
119
|
-
|
120
|
-
100, 100, 100, 100 ]
|
87
|
+
29, 29, 14, 21, 29, 29, 28, 21, 21, 29,
|
88
|
+
29, 29, 2, 2, 55, 14, 2, 2, 1, 28,
|
89
|
+
28, 2, 2, 2, 17, 75, 27, 27, 75, 54,
|
90
|
+
27, 27, 29, 29, 29, 27, 27, 27, 53, 42,
|
91
|
+
15, 15, 59, 55, 2, 2, 2, 59, 59, 59,
|
92
|
+
64, 42, 17, 33, 33, 64, 64, 64, 27, 27,
|
93
|
+
27, 19, 19, 15, 15, 73, 19, 19, 19, 16,
|
94
|
+
16, 59, 59, 51, 16, 16, 16, 25, 25, 64,
|
95
|
+
64, 49, 25, 25, 25, 20, 20, 12, 12, 19,
|
96
|
+
19, 19, 12, 12, 12, 80, 40, 16, 16, 16,
|
97
|
+
80, 8, 83, 116, 8, 116, 25, 25, 20, 20,
|
98
|
+
70, 116, 70, 11, 11, 12, 12, 12, 116, 71,
|
99
|
+
116, 71, 116, 116, 116, 116, 116, 116, 116, 116,
|
100
|
+
116, 116, 121, 87, 121, 121, 11, 11, 88, 69,
|
101
|
+
121, 69, 5, 5, 18, 18, 89, 121, 90, 121,
|
102
|
+
91, 121, 121, 121, 121, 121, 121, 121, 121, 121,
|
103
|
+
121, 82, 92, 82, 82, 5, 5, 18, 18, 82,
|
104
|
+
36, 36, 36, 36, 66, 99, 82, 103, 82, 106,
|
105
|
+
82, 82, 82, 82, 82, 82, 82, 82, 82, 82,
|
106
|
+
132, 108, 132, 45, 45, 45, 111, 26, 132, 24,
|
107
|
+
13, 117, 10, 9, 139, 132, 140, 132, 3, 132,
|
108
|
+
132, 132, 132, 132, 132, 132, 132, 132, 132, 143,
|
109
|
+
144, 143, 148, nil, nil, nil, nil, 143, nil, nil,
|
110
|
+
nil, nil, nil, nil, 143, nil, 143, nil, 143, 143,
|
111
|
+
143, 143, 143, 143, 143, 143, 143, 143, 96, nil,
|
112
|
+
96, nil, 96, nil, nil, nil, 96, nil, nil, 96,
|
113
|
+
nil, nil, nil, 96, nil, 96, 96, 96, 96, 96,
|
114
|
+
96, 96, 96, 96, 96, 96, 96, 114, nil, 114,
|
115
|
+
nil, nil, nil, nil, nil, 114, nil, nil, nil, nil,
|
116
|
+
nil, nil, 114, nil, 114, nil, 114, 114, 114, 114,
|
117
|
+
114, 114, 114, 114, 114, 114, 113, nil, 113, 113,
|
118
|
+
113, 113, 113, 113, 113, 113, 113 ]
|
121
119
|
|
122
120
|
racc_action_pointer = [
|
123
|
-
nil,
|
124
|
-
|
125
|
-
nil, nil,
|
126
|
-
|
127
|
-
|
128
|
-
nil,
|
129
|
-
nil, nil,
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
134
|
-
nil,
|
135
|
-
nil,
|
136
|
-
nil, nil,
|
137
|
-
|
121
|
+
nil, 18, 10, 208, nil, 130, nil, nil, 95, 197,
|
122
|
+
196, 101, 81, 196, -4, 28, 63, 20, 132, 55,
|
123
|
+
73, -3, nil, nil, 190, 71, 189, 24, -1, -2,
|
124
|
+
nil, nil, nil, 45, nil, nil, 156, nil, nil, nil,
|
125
|
+
91, nil, 33, nil, nil, 188, nil, nil, nil, 71,
|
126
|
+
nil, 67, nil, 33, 19, 7, nil, nil, nil, 36,
|
127
|
+
nil, nil, nil, nil, 44, nil, 168, nil, nil, 135,
|
128
|
+
106, 115, nil, 47, nil, 20, nil, nil, nil, nil,
|
129
|
+
89, nil, 157, 66, nil, nil, nil, 119, 124, 132,
|
130
|
+
134, 136, 148, nil, nil, nil, 244, nil, nil, 168,
|
131
|
+
nil, nil, nil, 170, nil, nil, 172, nil, 184, nil,
|
132
|
+
nil, 189, nil, 285, 273, nil, 99, 168, nil, nil,
|
133
|
+
nil, 128, nil, nil, nil, nil, nil, nil, nil, nil,
|
134
|
+
nil, nil, 186, nil, nil, nil, nil, nil, nil, 171,
|
135
|
+
188, nil, nil, 215, 187, nil, nil, nil, 189, nil,
|
136
|
+
nil ]
|
138
137
|
|
139
138
|
racc_action_default = [
|
140
|
-
-1, -
|
141
|
-
-
|
142
|
-
-
|
143
|
-
|
144
|
-
-
|
145
|
-
-
|
146
|
-
|
147
|
-
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
-
|
152
|
-
-
|
153
|
-
-
|
154
|
-
|
139
|
+
-1, -103, -103, -103, -38, -35, -47, -36, -103, -103,
|
140
|
+
-103, -39, -18, -103, -103, -40, -19, -103, -41, -103,
|
141
|
+
-42, -103, -37, -2, -103, -103, -28, -5, -30, -6,
|
142
|
+
-7, 151, -34, -103, -15, -22, -103, -48, -43, -16,
|
143
|
+
-103, -56, -103, -44, -17, -103, -12, -13, -45, -103,
|
144
|
+
-46, -103, -68, -61, -103, -103, -24, -26, -25, -103,
|
145
|
+
-3, -31, -32, -33, -103, -4, -103, -21, -55, -103,
|
146
|
+
-103, -103, -8, -103, -57, -103, -10, -11, -20, -69,
|
147
|
+
-60, -23, -103, -103, -27, -29, -14, -103, -103, -103,
|
148
|
+
-103, -103, -103, -58, -9, -59, -75, -91, -85, -76,
|
149
|
+
-99, -77, -93, -78, -92, -89, -79, -94, -80, -102,
|
150
|
+
-95, -81, -96, -103, -103, -97, -103, -67, -98, -100,
|
151
|
+
-87, -103, -50, -49, -51, -52, -54, -53, -71, -72,
|
152
|
+
-74, -70, -103, -101, -88, -86, -84, -82, -90, -67,
|
153
|
+
-103, -66, -62, -103, -67, -73, -63, -83, -67, -64,
|
154
|
+
-65 ]
|
155
155
|
|
156
156
|
racc_goto_table = [
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
nil, nil,
|
161
|
-
nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
162
|
-
|
163
|
-
|
157
|
+
117, 54, 142, 33, 84, 32, 58, 85, 64, 39,
|
158
|
+
23, 38, 45, 44, 130, 43, 49, 2, 48, 1,
|
159
|
+
50, 132, 138, nil, 146, nil, nil, nil, nil, 149,
|
160
|
+
nil, nil, 139, 150, 140, 60, nil, 65, nil, 144,
|
161
|
+
75, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
162
|
+
145, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
163
|
+
95, 148 ]
|
164
164
|
|
165
165
|
racc_goto_check = [
|
166
|
-
26, 27, 8,
|
167
|
-
19,
|
168
|
-
|
169
|
-
nil, nil,
|
170
|
-
nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
171
|
-
nil, nil,
|
172
|
-
|
166
|
+
26, 13, 27, 8, 14, 19, 12, 15, 17, 6,
|
167
|
+
2, 19, 7, 6, 26, 19, 6, 3, 19, 1,
|
168
|
+
19, 28, 31, nil, 27, nil, nil, nil, nil, 27,
|
169
|
+
nil, nil, 26, 27, 26, 2, nil, 2, nil, 26,
|
170
|
+
8, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
171
|
+
26, nil, nil, nil, nil, nil, nil, nil, nil, nil,
|
172
|
+
13, 26 ]
|
173
173
|
|
174
174
|
racc_goto_pointer = [
|
175
|
-
nil,
|
176
|
-
nil, nil,
|
177
|
-
nil, nil, nil, nil, nil, nil, -
|
178
|
-
nil, -
|
175
|
+
nil, 19, 8, 17, nil, nil, -3, -5, -5, nil,
|
176
|
+
nil, nil, -19, -20, -55, -57, nil, -20, nil, 0,
|
177
|
+
nil, nil, nil, nil, nil, nil, -82, -115, -75, nil,
|
178
|
+
nil, -91, nil, nil, nil, nil, nil ]
|
179
179
|
|
180
180
|
racc_goto_default = [
|
181
|
-
nil, nil, nil, nil,
|
182
|
-
|
183
|
-
|
184
|
-
|
181
|
+
nil, nil, nil, nil, 27, 29, 30, nil, nil, 12,
|
182
|
+
16, 19, 21, nil, 24, 26, 28, nil, 5, 7,
|
183
|
+
11, 15, 18, 20, 53, 55, nil, nil, nil, 96,
|
184
|
+
99, 101, 103, 106, 108, 111, 113 ]
|
185
185
|
|
186
186
|
racc_reduce_table = [
|
187
187
|
0, 0, :racc_error,
|
@@ -253,28 +253,28 @@ racc_reduce_table = [
|
|
253
253
|
1, 64, :_reduce_66,
|
254
254
|
0, 64, :_reduce_67,
|
255
255
|
1, 62, :_reduce_68,
|
256
|
+
2, 62, :_reduce_69,
|
256
257
|
1, 65, :_reduce_none,
|
257
258
|
1, 65, :_reduce_none,
|
258
259
|
1, 65, :_reduce_none,
|
259
|
-
3, 63, :
|
260
|
-
2, 63, :
|
261
|
-
1, 63, :
|
260
|
+
3, 63, :_reduce_73,
|
261
|
+
2, 63, :_reduce_74,
|
262
|
+
1, 63, :_reduce_75,
|
262
263
|
1, 66, :_reduce_none,
|
263
264
|
1, 66, :_reduce_none,
|
264
265
|
1, 66, :_reduce_none,
|
265
266
|
1, 66, :_reduce_none,
|
266
267
|
1, 66, :_reduce_none,
|
267
268
|
1, 66, :_reduce_none,
|
268
|
-
2, 72, :
|
269
|
-
3, 72, :
|
270
|
-
2, 71, :
|
271
|
-
1, 71, :
|
272
|
-
2, 70, :
|
273
|
-
1, 70, :
|
274
|
-
2, 69, :
|
275
|
-
1, 69, :
|
276
|
-
2, 68, :
|
277
|
-
1, 68, :_reduce_90,
|
269
|
+
2, 72, :_reduce_82,
|
270
|
+
3, 72, :_reduce_83,
|
271
|
+
2, 71, :_reduce_84,
|
272
|
+
1, 71, :_reduce_85,
|
273
|
+
2, 70, :_reduce_86,
|
274
|
+
1, 70, :_reduce_87,
|
275
|
+
2, 69, :_reduce_88,
|
276
|
+
1, 69, :_reduce_89,
|
277
|
+
2, 68, :_reduce_90,
|
278
278
|
1, 68, :_reduce_91,
|
279
279
|
1, 68, :_reduce_92,
|
280
280
|
1, 68, :_reduce_93,
|
@@ -282,14 +282,15 @@ racc_reduce_table = [
|
|
282
282
|
1, 68, :_reduce_95,
|
283
283
|
1, 68, :_reduce_96,
|
284
284
|
1, 68, :_reduce_97,
|
285
|
-
1,
|
285
|
+
1, 68, :_reduce_98,
|
286
286
|
1, 73, :_reduce_99,
|
287
|
-
|
288
|
-
|
287
|
+
1, 73, :_reduce_100,
|
288
|
+
2, 67, :_reduce_101,
|
289
|
+
1, 67, :_reduce_102 ]
|
289
290
|
|
290
|
-
racc_reduce_n =
|
291
|
+
racc_reduce_n = 103
|
291
292
|
|
292
|
-
racc_shift_n =
|
293
|
+
racc_shift_n = 151
|
293
294
|
|
294
295
|
racc_token_table = {
|
295
296
|
false => 0,
|
@@ -908,14 +909,21 @@ module_eval(<<'.,.,', 'parser.y', 227)
|
|
908
909
|
end
|
909
910
|
.,.,
|
910
911
|
|
911
|
-
|
912
|
+
module_eval(<<'.,.,', 'parser.y', 228)
|
913
|
+
def _reduce_69(val, _values, result)
|
914
|
+
result = interpret_identifier val.join
|
915
|
+
result
|
916
|
+
end
|
917
|
+
.,.,
|
912
918
|
|
913
919
|
# reduce 70 omitted
|
914
920
|
|
915
921
|
# reduce 71 omitted
|
916
922
|
|
917
|
-
|
918
|
-
|
923
|
+
# reduce 72 omitted
|
924
|
+
|
925
|
+
module_eval(<<'.,.,', 'parser.y', 237)
|
926
|
+
def _reduce_73(val, _values, result)
|
919
927
|
result = [val.first, val.last].flatten
|
920
928
|
val.last.first.operator = val[1]
|
921
929
|
|
@@ -923,22 +931,20 @@ module_eval(<<'.,.,', 'parser.y', 236)
|
|
923
931
|
end
|
924
932
|
.,.,
|
925
933
|
|
926
|
-
module_eval(<<'.,.,', 'parser.y',
|
927
|
-
def
|
934
|
+
module_eval(<<'.,.,', 'parser.y', 240)
|
935
|
+
def _reduce_74(val, _values, result)
|
928
936
|
result = val.flatten
|
929
937
|
result
|
930
938
|
end
|
931
939
|
.,.,
|
932
940
|
|
933
|
-
module_eval(<<'.,.,', 'parser.y',
|
934
|
-
def
|
941
|
+
module_eval(<<'.,.,', 'parser.y', 241)
|
942
|
+
def _reduce_75(val, _values, result)
|
935
943
|
result = val
|
936
944
|
result
|
937
945
|
end
|
938
946
|
.,.,
|
939
947
|
|
940
|
-
# reduce 75 omitted
|
941
|
-
|
942
948
|
# reduce 76 omitted
|
943
949
|
|
944
950
|
# reduce 77 omitted
|
@@ -949,15 +955,17 @@ module_eval(<<'.,.,', 'parser.y', 240)
|
|
949
955
|
|
950
956
|
# reduce 80 omitted
|
951
957
|
|
952
|
-
|
953
|
-
|
958
|
+
# reduce 81 omitted
|
959
|
+
|
960
|
+
module_eval(<<'.,.,', 'parser.y', 252)
|
961
|
+
def _reduce_82(val, _values, result)
|
954
962
|
result = val.first
|
955
963
|
result
|
956
964
|
end
|
957
965
|
.,.,
|
958
966
|
|
959
|
-
module_eval(<<'.,.,', 'parser.y',
|
960
|
-
def
|
967
|
+
module_eval(<<'.,.,', 'parser.y', 254)
|
968
|
+
def _reduce_83(val, _values, result)
|
961
969
|
name = interpret_identifier val.first.sub(/\($/, '')
|
962
970
|
if name == 'rgb'
|
963
971
|
result = Terms::Rgb.new(*val[1])
|
@@ -969,50 +977,50 @@ module_eval(<<'.,.,', 'parser.y', 253)
|
|
969
977
|
end
|
970
978
|
.,.,
|
971
979
|
|
972
|
-
module_eval(<<'.,.,', 'parser.y',
|
973
|
-
def
|
980
|
+
module_eval(<<'.,.,', 'parser.y', 263)
|
981
|
+
def _reduce_84(val, _values, result)
|
974
982
|
result = val.first
|
975
983
|
result
|
976
984
|
end
|
977
985
|
.,.,
|
978
986
|
|
979
|
-
module_eval(<<'.,.,', 'parser.y',
|
980
|
-
def
|
987
|
+
module_eval(<<'.,.,', 'parser.y', 264)
|
988
|
+
def _reduce_85(val, _values, result)
|
981
989
|
result = Terms::Hash.new val.first.sub(/^#/, '')
|
982
990
|
result
|
983
991
|
end
|
984
992
|
.,.,
|
985
993
|
|
986
|
-
module_eval(<<'.,.,', 'parser.y',
|
987
|
-
def
|
994
|
+
module_eval(<<'.,.,', 'parser.y', 267)
|
995
|
+
def _reduce_86(val, _values, result)
|
988
996
|
result = val.first
|
989
997
|
result
|
990
998
|
end
|
991
999
|
.,.,
|
992
1000
|
|
993
|
-
module_eval(<<'.,.,', 'parser.y',
|
994
|
-
def
|
1001
|
+
module_eval(<<'.,.,', 'parser.y', 268)
|
1002
|
+
def _reduce_87(val, _values, result)
|
995
1003
|
result = Terms::URI.new interpret_uri val.first
|
996
1004
|
result
|
997
1005
|
end
|
998
1006
|
.,.,
|
999
1007
|
|
1000
|
-
module_eval(<<'.,.,', 'parser.y',
|
1001
|
-
def
|
1008
|
+
module_eval(<<'.,.,', 'parser.y', 270)
|
1009
|
+
def _reduce_88(val, _values, result)
|
1002
1010
|
result = val.first
|
1003
1011
|
result
|
1004
1012
|
end
|
1005
1013
|
.,.,
|
1006
1014
|
|
1007
|
-
module_eval(<<'.,.,', 'parser.y',
|
1008
|
-
def
|
1015
|
+
module_eval(<<'.,.,', 'parser.y', 271)
|
1016
|
+
def _reduce_89(val, _values, result)
|
1009
1017
|
result = Terms::String.new interpret_string val.first
|
1010
1018
|
result
|
1011
1019
|
end
|
1012
1020
|
.,.,
|
1013
1021
|
|
1014
|
-
module_eval(<<'.,.,', 'parser.y',
|
1015
|
-
def
|
1022
|
+
module_eval(<<'.,.,', 'parser.y', 275)
|
1023
|
+
def _reduce_90(val, _values, result)
|
1016
1024
|
result = val[1]
|
1017
1025
|
val[1].unary_operator = val.first
|
1018
1026
|
|
@@ -1020,24 +1028,24 @@ module_eval(<<'.,.,', 'parser.y', 274)
|
|
1020
1028
|
end
|
1021
1029
|
.,.,
|
1022
1030
|
|
1023
|
-
module_eval(<<'.,.,', 'parser.y',
|
1024
|
-
def
|
1031
|
+
module_eval(<<'.,.,', 'parser.y', 279)
|
1032
|
+
def _reduce_91(val, _values, result)
|
1025
1033
|
result = Terms::Number.new numeric val.first
|
1026
1034
|
|
1027
1035
|
result
|
1028
1036
|
end
|
1029
1037
|
.,.,
|
1030
1038
|
|
1031
|
-
module_eval(<<'.,.,', 'parser.y',
|
1032
|
-
def
|
1039
|
+
module_eval(<<'.,.,', 'parser.y', 282)
|
1040
|
+
def _reduce_92(val, _values, result)
|
1033
1041
|
result = Terms::Number.new numeric(val.first), nil, '%'
|
1034
1042
|
|
1035
1043
|
result
|
1036
1044
|
end
|
1037
1045
|
.,.,
|
1038
1046
|
|
1039
|
-
module_eval(<<'.,.,', 'parser.y',
|
1040
|
-
def
|
1047
|
+
module_eval(<<'.,.,', 'parser.y', 285)
|
1048
|
+
def _reduce_93(val, _values, result)
|
1041
1049
|
unit = val.first.gsub(/[\s\d.]/, '')
|
1042
1050
|
result = Terms::Number.new numeric(val.first), nil, unit
|
1043
1051
|
|
@@ -1045,24 +1053,24 @@ module_eval(<<'.,.,', 'parser.y', 284)
|
|
1045
1053
|
end
|
1046
1054
|
.,.,
|
1047
1055
|
|
1048
|
-
module_eval(<<'.,.,', 'parser.y',
|
1049
|
-
def
|
1056
|
+
module_eval(<<'.,.,', 'parser.y', 289)
|
1057
|
+
def _reduce_94(val, _values, result)
|
1050
1058
|
result = Terms::Number.new numeric(val.first), nil, 'em'
|
1051
1059
|
|
1052
1060
|
result
|
1053
1061
|
end
|
1054
1062
|
.,.,
|
1055
1063
|
|
1056
|
-
module_eval(<<'.,.,', 'parser.y',
|
1057
|
-
def
|
1064
|
+
module_eval(<<'.,.,', 'parser.y', 292)
|
1065
|
+
def _reduce_95(val, _values, result)
|
1058
1066
|
result = Terms::Number.new numeric(val.first), nil, 'ex'
|
1059
1067
|
|
1060
1068
|
result
|
1061
1069
|
end
|
1062
1070
|
.,.,
|
1063
1071
|
|
1064
|
-
module_eval(<<'.,.,', 'parser.y',
|
1065
|
-
def
|
1072
|
+
module_eval(<<'.,.,', 'parser.y', 295)
|
1073
|
+
def _reduce_96(val, _values, result)
|
1066
1074
|
unit = val.first.gsub(/[\s\d.]/, '')
|
1067
1075
|
result = Terms::Number.new numeric(val.first), nil, unit
|
1068
1076
|
|
@@ -1070,8 +1078,8 @@ module_eval(<<'.,.,', 'parser.y', 294)
|
|
1070
1078
|
end
|
1071
1079
|
.,.,
|
1072
1080
|
|
1073
|
-
module_eval(<<'.,.,', 'parser.y',
|
1074
|
-
def
|
1081
|
+
module_eval(<<'.,.,', 'parser.y', 299)
|
1082
|
+
def _reduce_97(val, _values, result)
|
1075
1083
|
unit = val.first.gsub(/[\s\d.]/, '')
|
1076
1084
|
result = Terms::Number.new numeric(val.first), nil, unit
|
1077
1085
|
|
@@ -1079,8 +1087,8 @@ module_eval(<<'.,.,', 'parser.y', 298)
|
|
1079
1087
|
end
|
1080
1088
|
.,.,
|
1081
1089
|
|
1082
|
-
module_eval(<<'.,.,', 'parser.y',
|
1083
|
-
def
|
1090
|
+
module_eval(<<'.,.,', 'parser.y', 303)
|
1091
|
+
def _reduce_98(val, _values, result)
|
1084
1092
|
unit = val.first.gsub(/[\s\d.]/, '')
|
1085
1093
|
result = Terms::Number.new numeric(val.first), nil, unit
|
1086
1094
|
|
@@ -1088,29 +1096,29 @@ module_eval(<<'.,.,', 'parser.y', 302)
|
|
1088
1096
|
end
|
1089
1097
|
.,.,
|
1090
1098
|
|
1091
|
-
module_eval(<<'.,.,', 'parser.y',
|
1092
|
-
def
|
1099
|
+
module_eval(<<'.,.,', 'parser.y', 308)
|
1100
|
+
def _reduce_99(val, _values, result)
|
1093
1101
|
result = :minus
|
1094
1102
|
result
|
1095
1103
|
end
|
1096
1104
|
.,.,
|
1097
1105
|
|
1098
|
-
module_eval(<<'.,.,', 'parser.y',
|
1099
|
-
def
|
1106
|
+
module_eval(<<'.,.,', 'parser.y', 309)
|
1107
|
+
def _reduce_100(val, _values, result)
|
1100
1108
|
result = :plus
|
1101
1109
|
result
|
1102
1110
|
end
|
1103
1111
|
.,.,
|
1104
1112
|
|
1105
|
-
module_eval(<<'.,.,', 'parser.y',
|
1106
|
-
def
|
1113
|
+
module_eval(<<'.,.,', 'parser.y', 312)
|
1114
|
+
def _reduce_101(val, _values, result)
|
1107
1115
|
result = val.first
|
1108
1116
|
result
|
1109
1117
|
end
|
1110
1118
|
.,.,
|
1111
1119
|
|
1112
|
-
module_eval(<<'.,.,', 'parser.y',
|
1113
|
-
def
|
1120
|
+
module_eval(<<'.,.,', 'parser.y', 313)
|
1121
|
+
def _reduce_102(val, _values, result)
|
1114
1122
|
result = Terms::Ident.new interpret_identifier val.first
|
1115
1123
|
result
|
1116
1124
|
end
|
data/lib/csspool/css/parser.y
CHANGED
data/lib/csspool.rb
CHANGED
data/test/css/test_document.rb
CHANGED
@@ -1,10 +1,17 @@
|
|
1
1
|
require 'helper'
|
2
|
-
|
3
2
|
module CSSPool
|
4
3
|
module CSS
|
5
4
|
class TestDocument < CSSPool::TestCase
|
5
|
+
def test_file_open
|
6
|
+
doc = File.open("#{ASSET_DIR}/test.css") do |f|
|
7
|
+
CSSPool.CSS f
|
8
|
+
end
|
9
|
+
|
10
|
+
assert_equal 1, doc['.test'].length
|
11
|
+
end
|
12
|
+
|
6
13
|
def test_search
|
7
|
-
doc = CSSPool.CSS(
|
14
|
+
doc = CSSPool.CSS("div > p { background: red; }\n")
|
8
15
|
assert_equal 1, doc['div > p'].length
|
9
16
|
assert_equal 1, doc['div > p'].first.declarations.length
|
10
17
|
end
|
data/test/css/test_parser.rb
CHANGED
@@ -163,6 +163,25 @@ module CSSPool
|
|
163
163
|
assert_equal %w{ background padding }, names
|
164
164
|
end
|
165
165
|
|
166
|
+
def test_ie_safe_hack
|
167
|
+
# http://mathiasbynens.be/notes/safe-css-hacks
|
168
|
+
@parser.scan_str <<-eocss
|
169
|
+
.foo {
|
170
|
+
color: black;
|
171
|
+
color: green\\9; /* IE8 and older, but there's more... */
|
172
|
+
*color: blue; /* IE7 and older */
|
173
|
+
_color: red; /* IE6 and older */
|
174
|
+
}
|
175
|
+
eocss
|
176
|
+
declarations = @parser.handler.calls.find_all { |x|
|
177
|
+
x.first == :property
|
178
|
+
}
|
179
|
+
names = declarations.map { |y| y[1].first }
|
180
|
+
assert_equal %w{color color *color _color}, names
|
181
|
+
# values = declarations.map { |y| y[1][1].first.to_s }
|
182
|
+
# assert_equal %w{black green\\9 blue red}, values
|
183
|
+
end
|
184
|
+
|
166
185
|
def test_star_attribute
|
167
186
|
assert_attribute '*:foo { }'
|
168
187
|
assert_attribute 'a *.foo { }'
|
data/test/files/test.css
ADDED
metadata
CHANGED
@@ -1,110 +1,142 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: csspool
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 3
|
5
5
|
prerelease:
|
6
|
+
segments:
|
7
|
+
- 3
|
8
|
+
- 0
|
9
|
+
- 2
|
10
|
+
version: 3.0.2
|
6
11
|
platform: ruby
|
7
|
-
authors:
|
12
|
+
authors:
|
8
13
|
- Aaron Patterson
|
9
14
|
- John Barnette
|
10
15
|
autorequire:
|
11
16
|
bindir: bin
|
12
17
|
cert_chain: []
|
13
|
-
|
14
|
-
|
15
|
-
|
18
|
+
|
19
|
+
date: 2012-10-09 00:00:00 Z
|
20
|
+
dependencies:
|
21
|
+
- !ruby/object:Gem::Dependency
|
16
22
|
name: rdoc
|
17
|
-
|
23
|
+
prerelease: false
|
24
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
18
25
|
none: false
|
19
|
-
requirements:
|
26
|
+
requirements:
|
20
27
|
- - ~>
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
hash: 19
|
30
|
+
segments:
|
31
|
+
- 3
|
32
|
+
- 10
|
33
|
+
version: "3.10"
|
23
34
|
type: :development
|
24
|
-
|
25
|
-
|
26
|
-
- !ruby/object:Gem::Dependency
|
35
|
+
version_requirements: *id001
|
36
|
+
- !ruby/object:Gem::Dependency
|
27
37
|
name: racc
|
28
|
-
|
38
|
+
prerelease: false
|
39
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
29
40
|
none: false
|
30
|
-
requirements:
|
31
|
-
- -
|
32
|
-
- !ruby/object:Gem::Version
|
33
|
-
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
hash: 3
|
45
|
+
segments:
|
46
|
+
- 0
|
47
|
+
version: "0"
|
34
48
|
type: :development
|
35
|
-
|
36
|
-
|
37
|
-
- !ruby/object:Gem::Dependency
|
49
|
+
version_requirements: *id002
|
50
|
+
- !ruby/object:Gem::Dependency
|
38
51
|
name: rexical
|
39
|
-
|
52
|
+
prerelease: false
|
53
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
40
54
|
none: false
|
41
|
-
requirements:
|
42
|
-
- -
|
43
|
-
- !ruby/object:Gem::Version
|
44
|
-
|
55
|
+
requirements:
|
56
|
+
- - ">="
|
57
|
+
- !ruby/object:Gem::Version
|
58
|
+
hash: 3
|
59
|
+
segments:
|
60
|
+
- 0
|
61
|
+
version: "0"
|
45
62
|
type: :development
|
46
|
-
|
47
|
-
|
48
|
-
- !ruby/object:Gem::Dependency
|
63
|
+
version_requirements: *id003
|
64
|
+
- !ruby/object:Gem::Dependency
|
49
65
|
name: hoe-git
|
50
|
-
|
66
|
+
prerelease: false
|
67
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
51
68
|
none: false
|
52
|
-
requirements:
|
53
|
-
- -
|
54
|
-
- !ruby/object:Gem::Version
|
55
|
-
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
hash: 3
|
73
|
+
segments:
|
74
|
+
- 0
|
75
|
+
version: "0"
|
56
76
|
type: :development
|
57
|
-
|
58
|
-
|
59
|
-
- !ruby/object:Gem::Dependency
|
77
|
+
version_requirements: *id004
|
78
|
+
- !ruby/object:Gem::Dependency
|
60
79
|
name: hoe-gemspec
|
61
|
-
|
80
|
+
prerelease: false
|
81
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
62
82
|
none: false
|
63
|
-
requirements:
|
64
|
-
- -
|
65
|
-
- !ruby/object:Gem::Version
|
66
|
-
|
83
|
+
requirements:
|
84
|
+
- - ">="
|
85
|
+
- !ruby/object:Gem::Version
|
86
|
+
hash: 3
|
87
|
+
segments:
|
88
|
+
- 0
|
89
|
+
version: "0"
|
67
90
|
type: :development
|
68
|
-
|
69
|
-
|
70
|
-
- !ruby/object:Gem::Dependency
|
91
|
+
version_requirements: *id005
|
92
|
+
- !ruby/object:Gem::Dependency
|
71
93
|
name: hoe-bundler
|
72
|
-
|
94
|
+
prerelease: false
|
95
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
73
96
|
none: false
|
74
|
-
requirements:
|
75
|
-
- -
|
76
|
-
- !ruby/object:Gem::Version
|
77
|
-
|
97
|
+
requirements:
|
98
|
+
- - ">="
|
99
|
+
- !ruby/object:Gem::Version
|
100
|
+
hash: 3
|
101
|
+
segments:
|
102
|
+
- 0
|
103
|
+
version: "0"
|
78
104
|
type: :development
|
79
|
-
|
80
|
-
|
81
|
-
- !ruby/object:Gem::Dependency
|
105
|
+
version_requirements: *id006
|
106
|
+
- !ruby/object:Gem::Dependency
|
82
107
|
name: hoe
|
83
|
-
|
108
|
+
prerelease: false
|
109
|
+
requirement: &id007 !ruby/object:Gem::Requirement
|
84
110
|
none: false
|
85
|
-
requirements:
|
111
|
+
requirements:
|
86
112
|
- - ~>
|
87
|
-
- !ruby/object:Gem::Version
|
88
|
-
|
113
|
+
- !ruby/object:Gem::Version
|
114
|
+
hash: 5
|
115
|
+
segments:
|
116
|
+
- 3
|
117
|
+
- 1
|
118
|
+
version: "3.1"
|
89
119
|
type: :development
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
well as a document oriented interface for parsing CSS.'
|
96
|
-
email:
|
120
|
+
version_requirements: *id007
|
121
|
+
description: |-
|
122
|
+
CSSPool is a CSS parser. CSSPool provides a SAC interface for parsing CSS as
|
123
|
+
well as a document oriented interface for parsing CSS.
|
124
|
+
email:
|
97
125
|
- aaronp@rubyforge.org
|
98
126
|
- jbarnette@rubyforge.org
|
99
127
|
executables: []
|
128
|
+
|
100
129
|
extensions: []
|
101
|
-
|
130
|
+
|
131
|
+
extra_rdoc_files:
|
102
132
|
- CHANGELOG.rdoc
|
103
133
|
- Manifest.txt
|
104
134
|
- README.rdoc
|
105
|
-
files:
|
135
|
+
files:
|
106
136
|
- .autotest
|
107
137
|
- CHANGELOG.rdoc
|
138
|
+
- Gemfile
|
139
|
+
- Gemfile.lock
|
108
140
|
- Manifest.txt
|
109
141
|
- README.rdoc
|
110
142
|
- Rakefile
|
@@ -154,6 +186,7 @@ files:
|
|
154
186
|
- test/css/test_import_rule.rb
|
155
187
|
- test/css/test_parser.rb
|
156
188
|
- test/css/test_tokenizer.rb
|
189
|
+
- test/files/test.css
|
157
190
|
- test/helper.rb
|
158
191
|
- test/sac/test_parser.rb
|
159
192
|
- test/sac/test_properties.rb
|
@@ -168,31 +201,39 @@ files:
|
|
168
201
|
- .gemtest
|
169
202
|
homepage: http://csspool.rubyforge.org
|
170
203
|
licenses: []
|
204
|
+
|
171
205
|
post_install_message:
|
172
|
-
rdoc_options:
|
206
|
+
rdoc_options:
|
173
207
|
- --main
|
174
208
|
- README.rdoc
|
175
|
-
require_paths:
|
209
|
+
require_paths:
|
176
210
|
- lib
|
177
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
211
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
178
212
|
none: false
|
179
|
-
requirements:
|
180
|
-
- -
|
181
|
-
- !ruby/object:Gem::Version
|
182
|
-
|
183
|
-
|
213
|
+
requirements:
|
214
|
+
- - ">="
|
215
|
+
- !ruby/object:Gem::Version
|
216
|
+
hash: 3
|
217
|
+
segments:
|
218
|
+
- 0
|
219
|
+
version: "0"
|
220
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
184
221
|
none: false
|
185
|
-
requirements:
|
186
|
-
- -
|
187
|
-
- !ruby/object:Gem::Version
|
188
|
-
|
222
|
+
requirements:
|
223
|
+
- - ">="
|
224
|
+
- !ruby/object:Gem::Version
|
225
|
+
hash: 3
|
226
|
+
segments:
|
227
|
+
- 0
|
228
|
+
version: "0"
|
189
229
|
requirements: []
|
230
|
+
|
190
231
|
rubyforge_project: csspool
|
191
232
|
rubygems_version: 1.8.17
|
192
233
|
signing_key:
|
193
234
|
specification_version: 3
|
194
235
|
summary: CSSPool is a CSS parser
|
195
|
-
test_files:
|
236
|
+
test_files:
|
196
237
|
- test/css/test_document.rb
|
197
238
|
- test/css/test_import_rule.rb
|
198
239
|
- test/css/test_parser.rb
|