@@ -30,7 +30,7 @@ BEGIN our %known-type =
30
30
$ type = CSSUnits. enums{$ type }
31
31
if CSSUnits. enums{$ type }: exists ;
32
32
33
- my ( $ raw-type , $ _class ) = $ type . split (' :' );
33
+ my $ raw-type = $ type . split (' :' ). head ;
34
34
die " unknown type: '$ raw-type '"
35
35
unless % known-type {$ raw-type }: exists ;
36
36
@@ -45,21 +45,21 @@ BEGIN our %known-type =
45
45
46
46
# unwrap Parcels
47
47
my @ l = $/ . can (' caps' )
48
- ?? ( $/ )
48
+ ?? $/
49
49
!! $/ . grep : *. defined ;
50
50
51
51
for @ l {
52
52
for . caps -> $ cap {
53
53
my ($ key , $ value ) = $ cap . kv ;
54
54
next if $ key eq ' 0' ;
55
55
$ key = $ key . lc ;
56
- my ( $ type , $ _class ) = $ key . split (' :' );
56
+ my $ type = $ key . split (' :' ). head ;
57
57
58
- $ value = $ value . ast
58
+ $ value .= ast
59
59
// next ;
60
60
61
61
if substr ($ key , 0 , 5 ) eq ' expr-' {
62
- $ key = ' expr: ' ~ substr ( $ key , 5 ) ;
62
+ $ key . substr-rw( 4 , 1 ) = ' : ' ;
63
63
}
64
64
elsif $ value . isa (Pair ) {
65
65
($ key , $ value ) = $ value . kv ;
@@ -86,7 +86,7 @@ BEGIN our %known-type =
86
86
87
87
# unwrap Parcels
88
88
my @ l = $/ . can (' caps' )
89
- ?? ( $/ )
89
+ ?? $/
90
90
!! $/ . grep : *. defined ;
91
91
92
92
for @ l {
@@ -95,13 +95,13 @@ BEGIN our %known-type =
95
95
next if $ key eq ' 0' ;
96
96
$ key = $ key . lc ;
97
97
98
- my ( $ type , $ _class ) = $ key . split (' :' );
98
+ my $ type = $ key . split (' :' ). head ;
99
99
100
- $ value = $ value . ast
100
+ $ value .= ast
101
101
// next ;
102
102
103
103
if substr ($ key , 0 , 5 ) eq ' expr-' {
104
- $ key = ' expr: ' ~ substr ( $ key , 5 ) ;
104
+ $ key . substr-rw( 4 , 1 ) = ' : ' ;
105
105
}
106
106
elsif $ value . isa (Pair ) {
107
107
($ key , $ value ) = $ value . kv ;
@@ -117,4 +117,28 @@ BEGIN our %known-type =
117
117
@ terms ;
118
118
}
119
119
120
+ method at-rule ($/ ) {
121
+ my % terms = $ . node ($/ );
122
+ % terms { CSSValue::AtKeywordComponent } // = $0 . lc ;
123
+ return $ . token ( % terms , : type(CSSObject::AtRule));
124
+ }
125
+
126
+ method func (Str : D $ ident ,
127
+ $ args ,
128
+ : $ type = CSSValue::FunctionComponent,
129
+ : $ arg-type = CSSValue::ArgumentListComponent,
130
+ | c --> Pair ) {
131
+ my % ast = $ args . isa (List )
132
+ ?? ($ arg-type => $ args )
133
+ !! $ args ;
134
+ % ast ,= : $ ident ;
135
+ $ . token ( % ast , : $ type , | c );
136
+ }
137
+
138
+ method pseudo-func ( Str $ ident , $/ --> Pair ) {
139
+ my $ expr = $ . list ($/ );
140
+ my % ast = : $ ident , : $ expr ;
141
+ $ . token ( % ast , : type(CSSSelector::PseudoFunction) );
142
+ }
143
+
120
144
}
0 commit comments