Skip to content

Commit ec1a896

Browse files
committed
Fixes parse error with blank attributes
Fixes zmoazeni#6
1 parent c1dc604 commit ec1a896

File tree

2 files changed

+9
-2
lines changed

2 files changed

+9
-2
lines changed

lib/csscss/parser/css.rb

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,8 @@ class Parser < Parslet::Parser
2020
comment.repeat(1) | space?
2121
}
2222

23+
rule(:blank_attribute) { str(";") >> space? }
24+
2325
rule(:attribute) {
2426
match["^:{}"].repeat(1).as(:property) >>
2527
str(":") >>
@@ -33,7 +35,7 @@ class Parser < Parslet::Parser
3335
match["^{}"].repeat(1).as(:selector) >>
3436
str("{") >>
3537
space? >>
36-
(comment | attribute).repeat(0).as(:properties) >>
38+
(comment | attribute | blank_attribute).repeat(0).as(:properties) >>
3739
str("}") >>
3840
space?
3941
).as(:ruleset)
@@ -50,7 +52,6 @@ class Parser < Parslet::Parser
5052
).as(:nested_ruleset)
5153
}
5254

53-
#rule(:blocks) { (nested_ruleset.as(:nested) | ruleset).repeat(0).as(:blocks) }
5455
rule(:blocks) {
5556
space? >> (comment | nested_ruleset | ruleset).repeat(1).as(:blocks) >> space?
5657
}

test/csscss/parser/css_test.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,12 @@ module Css
128128
rs(sel("h1"), [dec("outline", "1px")])
129129
])
130130
end
131+
132+
it "ignores double semicolons" do
133+
trans("h1 { display:none;;}").must_equal([
134+
rs(sel("h1"), [dec("display", "none")])
135+
])
136+
end
131137
end
132138
end
133139
end

0 commit comments

Comments
 (0)