@@ -21,51 +21,52 @@ class Parser < Parslet::Parser
2121 }
2222
2323 rule ( :attribute ) {
24- css_space? >>
2524 match [ "^:{}" ] . repeat ( 1 ) . as ( :property ) >>
2625 str ( ":" ) >>
27- css_space? >>
28- match [ "^;}" ] . repeat ( 1 ) . as ( :value )
29- }
30-
31- rule ( :attributes ) {
32- attribute >>
26+ match [ "^;}" ] . repeat ( 1 ) . as ( :value ) >>
3327 str ( ";" ) . maybe >>
34- css_space ?
28+ space ?
3529 }
3630
3731 rule ( :ruleset ) {
3832 (
39- css_space? >>
4033 match [ "^{}" ] . repeat ( 1 ) . as ( :selector ) >>
4134 str ( "{" ) >>
42- attributes . repeat ( 0 ) . as ( :properties ) >>
43- css_space? >>
35+ space? >>
36+ ( comment | attribute ) . repeat ( 0 ) . as ( :properties ) >>
4437 str ( "}" ) >>
45- css_space ?
38+ space ?
4639 ) . as ( :ruleset )
4740 }
4841
4942 rule ( :nested_ruleset ) {
50- css_space? >>
51- str ( "@" ) >>
52- match [ "^{}" ] . repeat ( 1 ) >>
53- str ( "{" ) >>
54- ruleset . repeat ( 0 ) >>
55- css_space? >>
56- str ( "}" ) >>
57- css_space?
43+ (
44+ str ( "@" ) >>
45+ match [ "^{}" ] . repeat ( 1 ) >>
46+ str ( "{" ) >>
47+ ( comment | ruleset ) . repeat ( 0 ) >>
48+ str ( "}" ) >>
49+ space?
50+ ) . as ( :nested_ruleset )
51+ }
52+
53+ #rule(:blocks) { (nested_ruleset.as(:nested) | ruleset).repeat(0).as(:blocks) }
54+ rule ( :blocks ) {
55+ space? >> ( comment . as ( :comment ) | nested_ruleset | ruleset ) . repeat ( 1 ) . as ( :blocks ) >> space?
5856 }
5957
60- rule ( :blocks ) { ( nested_ruleset . as ( :nested ) | ruleset ) . repeat ( 0 ) . as ( :blocks ) }
6158 root ( :blocks )
6259 end
6360
6461 class Transformer < Parslet ::Transform
65- rule ( nested : sequence ( :rulesets ) ) {
62+ rule ( nested_ruleset : sequence ( :rulesets ) ) {
6663 rulesets
6764 }
6865
66+ rule ( comment : simple ( :comment ) ) {
67+ [ ]
68+ }
69+
6970 rule ( ruleset : {
7071 selector : simple ( :selector ) ,
7172 properties : sequence ( :properties )
@@ -80,8 +81,8 @@ class Transformer < Parslet::Transform
8081 Declaration . from_parser ( property , value )
8182 }
8283
83- rule ( blocks : subtree ( :rulesets ) ) {
84- rulesets . flatten
84+ rule ( blocks : subtree ( :rulesets ) ) { | context |
85+ context [ : rulesets] . flatten
8586 }
8687 end
8788 end
0 commit comments