Skip to content

Commit 78013bf

Browse files
committed
Fixes a bug with nested media queries
There was a double issue, one with spacing and apparently media queries can be nested.
1 parent 23c53af commit 78013bf

File tree

3 files changed

+17
-3
lines changed

3 files changed

+17
-3
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
* Fixes attribute parsing bug that includes comments with braces
44
* Fixes parsing bug with empty media selectors #67
55
* Fixes parsing bug with quoted brackets #72
6+
* Fixes parsing bug with nested media queries #73
67

78
## 1.3.1 - 4/20/2013 ##
89

lib/csscss/parser/css.rb

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,8 @@ class Parser < Parslet::Parser
6666
str("@") >>
6767
match["^{}"].repeat(1) >>
6868
str("{") >>
69-
(comment | ruleset).repeat(1) >>
69+
space? >>
70+
(comment | ruleset | nested_ruleset).repeat(1) >>
7071
str("}") >>
7172
space?
7273
).as(:nested_ruleset)
@@ -94,8 +95,8 @@ class Parser < Parslet::Parser
9495
end
9596

9697
class Transformer < Parslet::Transform
97-
rule(nested_ruleset: sequence(:rulesets)) {
98-
rulesets
98+
rule(nested_ruleset: subtree(:rulesets)) { |context|
99+
context[:rulesets].flatten
99100
}
100101

101102
rule(import: simple(:import)) { [] }

test/csscss/parser/css_test.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,6 +119,15 @@ module Css
119119
}
120120
}
121121
122+
@media only screen {
123+
@-webkit-keyframes webkitSiblingBugfix {
124+
from { position: relative; }
125+
to { position: relative; }
126+
}
127+
128+
a { position: relative }
129+
}
130+
122131
h1 {
123132
outline: 1px;
124133
}
@@ -127,6 +136,9 @@ module Css
127136
trans(css).must_equal([
128137
rs(sel("#foo"), [dec("background-color", "black")]),
129138
rs(sel("#bar"), [dec("display", "none")]),
139+
rs(sel("from"), [dec("position", "relative")]),
140+
rs(sel("to"), [dec("position", "relative")]),
141+
rs(sel("a"), [dec("position", "relative")]),
130142
rs(sel("h1"), [dec("outline", "1px")])
131143
])
132144
end

0 commit comments

Comments
 (0)