csspool 4.0.0.pre → 4.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.
- checksums.yaml +7 -0
- data/CHANGELOG.rdoc +12 -0
- data/Gemfile.lock +6 -6
- data/Manifest.txt +10 -2
- data/Rakefile +1 -0
- data/lib/csspool/css/declaration.rb +1 -1
- data/lib/csspool/css/document.rb +5 -1
- data/lib/csspool/css/document_handler.rb +43 -11
- data/lib/csspool/css/fontface_rule.rb +13 -0
- data/lib/csspool/css/import_rule.rb +0 -5
- data/lib/csspool/css/media_feature.rb +14 -0
- data/lib/csspool/css/media_query.rb +19 -0
- data/lib/csspool/css/media_query_list.rb +41 -0
- data/lib/csspool/css/{media.rb → media_type.rb} +6 -4
- data/lib/csspool/css/parser.rb +1272 -671
- data/lib/csspool/css/parser.y +223 -53
- data/lib/csspool/css/rule_set.rb +4 -3
- data/lib/csspool/css/supports_rule.rb +14 -0
- data/lib/csspool/css/tokenizer.rb +92 -16
- data/lib/csspool/css/tokenizer.rex +42 -19
- data/lib/csspool/css.rb +6 -1
- data/lib/csspool/node.rb +22 -0
- data/lib/csspool/selector.rb +5 -4
- data/lib/csspool/selectors/pseudo.rb +2 -2
- data/lib/csspool/terms/function.rb +1 -1
- data/lib/csspool/terms/resolution.rb +13 -0
- data/lib/csspool/terms.rb +1 -0
- data/lib/csspool/visitors/children.rb +16 -2
- data/lib/csspool/visitors/comparable.rb +27 -8
- data/lib/csspool/visitors/iterator.rb +5 -3
- data/lib/csspool/visitors/to_css.rb +73 -20
- data/test/css/test_document_query.rb +37 -38
- data/test/css/test_font_face.rb +16 -0
- data/test/css/test_import_rule.rb +0 -3
- data/test/css/test_media_rule.rb +92 -0
- data/test/css/test_node_position.rb +81 -0
- data/test/css/test_parser.rb +12 -39
- data/test/css/test_supports_rule.rb +133 -0
- data/test/css/test_tokenizer.rb +4 -4
- data/test/css/test_variables.rb +33 -0
- data/test/helper.rb +3 -3
- data/test/sac/test_parser.rb +1 -0
- data/test/test_parser.rb +22 -9
- data/test/test_selector.rb +44 -4
- data/test/test_term.rb +29 -0
- data/test/visitors/test_comparable.rb +8 -0
- data/test/visitors/test_to_css.rb +89 -13
- metadata +54 -58
- data/test/_local_helper.rb +0 -2
@@ -1,4 +1,5 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
+
|
2
3
|
require 'helper'
|
3
4
|
|
4
5
|
module CSSPool
|
@@ -21,15 +22,15 @@ module CSSPool
|
|
21
22
|
selectors = %w{* p #id .cl :hover ::selection [href]}
|
22
23
|
combinators = ['', ' ', ' > ', ' + ']
|
23
24
|
|
24
|
-
combinations = selectors.product(combinators).map do |s,c|
|
25
|
-
if s != '*' && c != ''
|
25
|
+
combinations = selectors.product(combinators).map do |s,c|
|
26
|
+
if s != '*' && c != ''
|
26
27
|
s + c
|
27
28
|
end
|
28
29
|
end.compact
|
29
30
|
combinations = combinations.product(selectors).map { |s,c| s + c}
|
30
31
|
|
31
32
|
combinations.each do |s|
|
32
|
-
doc = CSSPool.CSS
|
33
|
+
doc = CSSPool.CSS(s + ' { }')
|
33
34
|
assert_equal s, doc.rule_sets.first.selectors.first.to_css
|
34
35
|
end
|
35
36
|
|
@@ -105,10 +106,10 @@ module CSSPool
|
|
105
106
|
div { background: red, blue; }
|
106
107
|
}
|
107
108
|
eocss
|
108
|
-
assert_equal 1, doc.rule_sets.first.
|
109
|
+
assert_equal 1, doc.rule_sets.first.parent_rule.length
|
109
110
|
|
110
111
|
doc = CSSPool.CSS(doc.to_css)
|
111
|
-
assert_equal 1, doc.rule_sets.first.
|
112
|
+
assert_equal 1, doc.rule_sets.first.parent_rule.length
|
112
113
|
end
|
113
114
|
|
114
115
|
def test_multiple_media
|
@@ -121,12 +122,87 @@ module CSSPool
|
|
121
122
|
div { background: red, blue; }
|
122
123
|
}
|
123
124
|
eocss
|
124
|
-
|
125
|
-
|
125
|
+
assert doc.rule_sets.first.parent_rule.is_a?(CSSPool::CSS::MediaQueryList)
|
126
|
+
assert doc.rule_sets[1].parent_rule.is_a?(CSSPool::CSS::MediaQueryList)
|
126
127
|
|
127
128
|
doc = CSSPool.CSS(doc.to_css)
|
128
|
-
|
129
|
-
|
129
|
+
assert doc.rule_sets.first.parent_rule.is_a?(CSSPool::CSS::MediaQueryList)
|
130
|
+
assert doc.rule_sets[1].parent_rule.is_a?(CSSPool::CSS::MediaQueryList)
|
131
|
+
end
|
132
|
+
|
133
|
+
def test_media_feature_space_after_colon
|
134
|
+
css = <<eocss.chomp
|
135
|
+
@media (orientation: portrait) {
|
136
|
+
div {
|
137
|
+
background: red;
|
138
|
+
}
|
139
|
+
}
|
140
|
+
eocss
|
141
|
+
doc = CSSPool.CSS(css)
|
142
|
+
assert_equal css.sub(' portrait', 'portrait'), doc.to_css
|
143
|
+
end
|
144
|
+
|
145
|
+
def test_media_feature_space_before_colon
|
146
|
+
css = <<eocss.chomp
|
147
|
+
@media (orientation :portrait) {
|
148
|
+
div {
|
149
|
+
background: red;
|
150
|
+
}
|
151
|
+
}
|
152
|
+
eocss
|
153
|
+
doc = CSSPool.CSS(css)
|
154
|
+
assert_equal css.sub(' :portrait', ':portrait'), doc.to_css
|
155
|
+
end
|
156
|
+
|
157
|
+
def test_media_features_with_and
|
158
|
+
css = <<eocss.chomp
|
159
|
+
@media screen and (min-width:400px) AND (max-width:600px) {
|
160
|
+
div {
|
161
|
+
background: red;
|
162
|
+
}
|
163
|
+
}
|
164
|
+
eocss
|
165
|
+
doc = CSSPool.CSS(css)
|
166
|
+
assert_equal css.sub('AND', 'and'), doc.to_css
|
167
|
+
assert_equal 1, doc.rule_sets.first.parent_rule.size
|
168
|
+
end
|
169
|
+
|
170
|
+
def test_media_query_with_only_and_not
|
171
|
+
css = <<eocss.chomp
|
172
|
+
@media print and (min-width:200pt) and (max-color:16), not screen and (max-width:400px) {
|
173
|
+
div {
|
174
|
+
background: red;
|
175
|
+
}
|
176
|
+
}
|
177
|
+
eocss
|
178
|
+
doc = CSSPool.CSS(css)
|
179
|
+
assert_equal 2, doc.rule_sets.first.parent_rule.size
|
180
|
+
assert_equal css, doc.to_css
|
181
|
+
end
|
182
|
+
|
183
|
+
def test_media_query_with_resolution
|
184
|
+
css = <<eocss.chomp
|
185
|
+
@media screen and (min-resolution:800dpi) {
|
186
|
+
div {
|
187
|
+
background: red;
|
188
|
+
}
|
189
|
+
}
|
190
|
+
eocss
|
191
|
+
doc = CSSPool.CSS(css)
|
192
|
+
assert_equal css, doc.to_css
|
193
|
+
end
|
194
|
+
|
195
|
+
def test_media_query_list_with_empty_ruleset
|
196
|
+
css = <<eocss.chomp
|
197
|
+
@media screen and ( min-width: 800px ) {
|
198
|
+
|
199
|
+
}
|
200
|
+
eocss
|
201
|
+
doc = CSSPool.CSS(css)
|
202
|
+
assert_equal 1, doc.rule_sets.size
|
203
|
+
assert doc.rule_sets.first.selectors.empty?
|
204
|
+
assert doc.rule_sets.first.declarations.empty?
|
205
|
+
assert_equal css.sub('( min-width: 800px )', '(min-width:800px)'), doc.to_css
|
130
206
|
end
|
131
207
|
|
132
208
|
def test_import
|
@@ -177,7 +253,7 @@ module CSSPool
|
|
177
253
|
end
|
178
254
|
end
|
179
255
|
|
180
|
-
def
|
256
|
+
def test_selector_pseudo
|
181
257
|
input_output = {
|
182
258
|
"pseudo" => ":pseudo",
|
183
259
|
"\"quotes\"" => ":\\000022quotes\\000022",
|
@@ -226,9 +302,9 @@ module CSSPool
|
|
226
302
|
|
227
303
|
def test_property
|
228
304
|
input_output = {
|
229
|
-
"property" => "
|
230
|
-
"colon:" => "
|
231
|
-
"space " => "
|
305
|
+
"property" => "property: value",
|
306
|
+
"colon:" => "colon\\:: value",
|
307
|
+
"space " => "space\\ : value"
|
232
308
|
}
|
233
309
|
input_output.each_pair do |input, output|
|
234
310
|
node = CSS::Declaration.new input, [Terms::Ident.new("value")], false, nil
|
metadata
CHANGED
@@ -1,8 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: csspool
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.0.0
|
5
|
-
prerelease:
|
4
|
+
version: 4.0.0
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Aaron Patterson
|
@@ -10,12 +9,11 @@ authors:
|
|
10
9
|
autorequire:
|
11
10
|
bindir: bin
|
12
11
|
cert_chain: []
|
13
|
-
date:
|
12
|
+
date: 2014-07-11 00:00:00.000000000 Z
|
14
13
|
dependencies:
|
15
14
|
- !ruby/object:Gem::Dependency
|
16
15
|
name: rdoc
|
17
16
|
requirement: !ruby/object:Gem::Requirement
|
18
|
-
none: false
|
19
17
|
requirements:
|
20
18
|
- - ~>
|
21
19
|
- !ruby/object:Gem::Version
|
@@ -23,7 +21,6 @@ dependencies:
|
|
23
21
|
type: :development
|
24
22
|
prerelease: false
|
25
23
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
-
none: false
|
27
24
|
requirements:
|
28
25
|
- - ~>
|
29
26
|
- !ruby/object:Gem::Version
|
@@ -31,103 +28,90 @@ dependencies:
|
|
31
28
|
- !ruby/object:Gem::Dependency
|
32
29
|
name: racc
|
33
30
|
requirement: !ruby/object:Gem::Requirement
|
34
|
-
none: false
|
35
31
|
requirements:
|
36
|
-
- -
|
32
|
+
- - '>='
|
37
33
|
- !ruby/object:Gem::Version
|
38
34
|
version: '0'
|
39
35
|
type: :development
|
40
36
|
prerelease: false
|
41
37
|
version_requirements: !ruby/object:Gem::Requirement
|
42
|
-
none: false
|
43
38
|
requirements:
|
44
|
-
- -
|
39
|
+
- - '>='
|
45
40
|
- !ruby/object:Gem::Version
|
46
41
|
version: '0'
|
47
42
|
- !ruby/object:Gem::Dependency
|
48
43
|
name: rexical
|
49
44
|
requirement: !ruby/object:Gem::Requirement
|
50
|
-
none: false
|
51
45
|
requirements:
|
52
|
-
- -
|
46
|
+
- - '>='
|
53
47
|
- !ruby/object:Gem::Version
|
54
48
|
version: '0'
|
55
49
|
type: :development
|
56
50
|
prerelease: false
|
57
51
|
version_requirements: !ruby/object:Gem::Requirement
|
58
|
-
none: false
|
59
52
|
requirements:
|
60
|
-
- -
|
53
|
+
- - '>='
|
61
54
|
- !ruby/object:Gem::Version
|
62
55
|
version: '0'
|
63
56
|
- !ruby/object:Gem::Dependency
|
64
57
|
name: hoe-git
|
65
58
|
requirement: !ruby/object:Gem::Requirement
|
66
|
-
none: false
|
67
59
|
requirements:
|
68
|
-
- -
|
60
|
+
- - '>='
|
69
61
|
- !ruby/object:Gem::Version
|
70
62
|
version: '0'
|
71
63
|
type: :development
|
72
64
|
prerelease: false
|
73
65
|
version_requirements: !ruby/object:Gem::Requirement
|
74
|
-
none: false
|
75
66
|
requirements:
|
76
|
-
- -
|
67
|
+
- - '>='
|
77
68
|
- !ruby/object:Gem::Version
|
78
69
|
version: '0'
|
79
70
|
- !ruby/object:Gem::Dependency
|
80
71
|
name: hoe-gemspec
|
81
72
|
requirement: !ruby/object:Gem::Requirement
|
82
|
-
none: false
|
83
73
|
requirements:
|
84
|
-
- -
|
74
|
+
- - '>='
|
85
75
|
- !ruby/object:Gem::Version
|
86
76
|
version: '0'
|
87
77
|
type: :development
|
88
78
|
prerelease: false
|
89
79
|
version_requirements: !ruby/object:Gem::Requirement
|
90
|
-
none: false
|
91
80
|
requirements:
|
92
|
-
- -
|
81
|
+
- - '>='
|
93
82
|
- !ruby/object:Gem::Version
|
94
83
|
version: '0'
|
95
84
|
- !ruby/object:Gem::Dependency
|
96
85
|
name: hoe-bundler
|
97
86
|
requirement: !ruby/object:Gem::Requirement
|
98
|
-
none: false
|
99
87
|
requirements:
|
100
|
-
- -
|
88
|
+
- - '>='
|
101
89
|
- !ruby/object:Gem::Version
|
102
90
|
version: '0'
|
103
91
|
type: :development
|
104
92
|
prerelease: false
|
105
93
|
version_requirements: !ruby/object:Gem::Requirement
|
106
|
-
none: false
|
107
94
|
requirements:
|
108
|
-
- -
|
95
|
+
- - '>='
|
109
96
|
- !ruby/object:Gem::Version
|
110
97
|
version: '0'
|
111
98
|
- !ruby/object:Gem::Dependency
|
112
99
|
name: hoe
|
113
100
|
requirement: !ruby/object:Gem::Requirement
|
114
|
-
none: false
|
115
101
|
requirements:
|
116
102
|
- - ~>
|
117
103
|
- !ruby/object:Gem::Version
|
118
|
-
version: '3.
|
104
|
+
version: '3.4'
|
119
105
|
type: :development
|
120
106
|
prerelease: false
|
121
107
|
version_requirements: !ruby/object:Gem::Requirement
|
122
|
-
none: false
|
123
108
|
requirements:
|
124
109
|
- - ~>
|
125
110
|
- !ruby/object:Gem::Version
|
126
|
-
version: '3.
|
127
|
-
description:
|
128
|
-
CSS as
|
129
|
-
|
130
|
-
well as a document oriented interface for parsing CSS.'
|
111
|
+
version: '3.4'
|
112
|
+
description: |-
|
113
|
+
CSSPool is a CSS parser. CSSPool provides a SAC interface for parsing CSS as
|
114
|
+
well as a document oriented interface for parsing CSS.
|
131
115
|
email:
|
132
116
|
- aaronp@rubyforge.org
|
133
117
|
- jbarnette@rubyforge.org
|
@@ -153,14 +137,19 @@ files:
|
|
153
137
|
- lib/csspool/css/document.rb
|
154
138
|
- lib/csspool/css/document_handler.rb
|
155
139
|
- lib/csspool/css/document_query.rb
|
140
|
+
- lib/csspool/css/fontface_rule.rb
|
156
141
|
- lib/csspool/css/import_rule.rb
|
157
142
|
- lib/csspool/css/keyframes_block.rb
|
158
143
|
- lib/csspool/css/keyframes_rule.rb
|
159
|
-
- lib/csspool/css/
|
144
|
+
- lib/csspool/css/media_feature.rb
|
145
|
+
- lib/csspool/css/media_query.rb
|
146
|
+
- lib/csspool/css/media_query_list.rb
|
147
|
+
- lib/csspool/css/media_type.rb
|
160
148
|
- lib/csspool/css/namespace_rule.rb
|
161
149
|
- lib/csspool/css/parser.rb
|
162
150
|
- lib/csspool/css/parser.y
|
163
151
|
- lib/csspool/css/rule_set.rb
|
152
|
+
- lib/csspool/css/supports_rule.rb
|
164
153
|
- lib/csspool/css/tokenizer.rb
|
165
154
|
- lib/csspool/css/tokenizer.rex
|
166
155
|
- lib/csspool/node.rb
|
@@ -185,6 +174,7 @@ files:
|
|
185
174
|
- lib/csspool/terms/ident.rb
|
186
175
|
- lib/csspool/terms/math.rb
|
187
176
|
- lib/csspool/terms/number.rb
|
177
|
+
- lib/csspool/terms/resolution.rb
|
188
178
|
- lib/csspool/terms/rgb.rb
|
189
179
|
- lib/csspool/terms/string.rb
|
190
180
|
- lib/csspool/terms/uri.rb
|
@@ -194,13 +184,15 @@ files:
|
|
194
184
|
- lib/csspool/visitors/iterator.rb
|
195
185
|
- lib/csspool/visitors/to_css.rb
|
196
186
|
- lib/csspool/visitors/visitor.rb
|
197
|
-
- test/_local_helper.rb
|
198
187
|
- test/css/test_document.rb
|
199
188
|
- test/css/test_document_query.rb
|
189
|
+
- test/css/test_font_face.rb
|
200
190
|
- test/css/test_import_rule.rb
|
201
191
|
- test/css/test_keyframes_rule.rb
|
192
|
+
- test/css/test_media_rule.rb
|
202
193
|
- test/css/test_namespace_rule.rb
|
203
194
|
- test/css/test_parser.rb
|
195
|
+
- test/css/test_supports_rule.rb
|
204
196
|
- test/css/test_tokenizer.rb
|
205
197
|
- test/files/test.css
|
206
198
|
- test/helper.rb
|
@@ -216,9 +208,13 @@ files:
|
|
216
208
|
- test/visitors/test_comparable.rb
|
217
209
|
- test/visitors/test_each.rb
|
218
210
|
- test/visitors/test_to_css.rb
|
211
|
+
- test/css/test_variables.rb
|
212
|
+
- test/css/test_node_position.rb
|
219
213
|
- .gemtest
|
220
214
|
homepage: http://csspool.rubyforge.org
|
221
|
-
licenses:
|
215
|
+
licenses:
|
216
|
+
- MIT
|
217
|
+
metadata: {}
|
222
218
|
post_install_message:
|
223
219
|
rdoc_options:
|
224
220
|
- --main
|
@@ -226,43 +222,43 @@ rdoc_options:
|
|
226
222
|
require_paths:
|
227
223
|
- lib
|
228
224
|
required_ruby_version: !ruby/object:Gem::Requirement
|
229
|
-
none: false
|
230
225
|
requirements:
|
231
|
-
- -
|
226
|
+
- - '>='
|
232
227
|
- !ruby/object:Gem::Version
|
233
228
|
version: '0'
|
234
|
-
segments:
|
235
|
-
- 0
|
236
|
-
hash: -4562967278317163394
|
237
229
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
238
|
-
none: false
|
239
230
|
requirements:
|
240
|
-
- -
|
231
|
+
- - '>='
|
241
232
|
- !ruby/object:Gem::Version
|
242
233
|
version: '0'
|
243
234
|
requirements: []
|
244
235
|
rubyforge_project: csspool
|
245
|
-
rubygems_version: 1.
|
236
|
+
rubygems_version: 2.1.9
|
246
237
|
signing_key:
|
247
|
-
specification_version:
|
238
|
+
specification_version: 4
|
248
239
|
summary: CSSPool is a CSS parser
|
249
240
|
test_files:
|
250
|
-
- test/
|
251
|
-
- test/
|
252
|
-
- test/
|
253
|
-
- test/
|
254
|
-
- test/css/test_namespace_rule.rb
|
255
|
-
- test/css/test_parser.rb
|
256
|
-
- test/css/test_tokenizer.rb
|
257
|
-
- test/sac/test_parser.rb
|
241
|
+
- test/test_selector.rb
|
242
|
+
- test/test_collection.rb
|
243
|
+
- test/test_term.rb
|
244
|
+
- test/test_parser.rb
|
258
245
|
- test/sac/test_properties.rb
|
246
|
+
- test/sac/test_parser.rb
|
259
247
|
- test/sac/test_terms.rb
|
260
|
-
- test/test_collection.rb
|
261
248
|
- test/test_declaration.rb
|
262
|
-
- test/
|
263
|
-
- test/
|
264
|
-
- test/
|
265
|
-
- test/
|
249
|
+
- test/css/test_import_rule.rb
|
250
|
+
- test/css/test_document.rb
|
251
|
+
- test/css/test_parser.rb
|
252
|
+
- test/css/test_font_face.rb
|
253
|
+
- test/css/test_variables.rb
|
254
|
+
- test/css/test_media_rule.rb
|
255
|
+
- test/css/test_namespace_rule.rb
|
256
|
+
- test/css/test_keyframes_rule.rb
|
257
|
+
- test/css/test_document_query.rb
|
258
|
+
- test/css/test_supports_rule.rb
|
259
|
+
- test/css/test_tokenizer.rb
|
260
|
+
- test/css/test_node_position.rb
|
266
261
|
- test/visitors/test_comparable.rb
|
267
262
|
- test/visitors/test_each.rb
|
263
|
+
- test/visitors/test_children.rb
|
268
264
|
- test/visitors/test_to_css.rb
|
data/test/_local_helper.rb
DELETED