1+ use crate :: rules:: font_palette_values:: FontPaletteValuesRule ;
12use crate :: rules:: layer:: { LayerBlockRule , LayerStatementRule } ;
23use crate :: rules:: property:: PropertyRule ;
34use crate :: values:: string:: CowArcStr ;
@@ -25,7 +26,7 @@ use crate::rules::{
2526 custom_media:: CustomMediaRule ,
2627 layer:: { LayerName }
2728} ;
28- use crate :: values:: ident:: CustomIdent ;
29+ use crate :: values:: ident:: { CustomIdent , DashedIdent } ;
2930use crate :: declaration:: { DeclarationBlock , DeclarationList , parse_declaration} ;
3031use crate :: vendor_prefix:: VendorPrefix ;
3132use std:: collections:: HashMap ;
@@ -83,12 +84,14 @@ pub enum AtRulePrelude<'i> {
8384 FontFace ,
8485 /// A @font-feature-values rule prelude, with its FamilyName list.
8586 FontFeatureValues , //(Vec<FamilyName>),
87+ /// A @font-palette-values rule prelude, with its name.
88+ FontPaletteValues ( DashedIdent < ' i > ) ,
8689 /// A @counter-style rule prelude, with its counter style name.
8790 CounterStyle ( CustomIdent < ' i > ) ,
8891 /// A @media rule prelude, with its media queries.
8992 Media ( MediaList < ' i > ) ,
9093 /// A @custom-media rule prelude.
91- CustomMedia ( CowRcStr < ' i > , MediaList < ' i > ) ,
94+ CustomMedia ( DashedIdent < ' i > , MediaList < ' i > ) ,
9295 /// An @supports rule, with its conditional
9396 Supports ( SupportsCondition < ' i > ) ,
9497 /// A @viewport rule prelude.
@@ -110,7 +113,7 @@ pub enum AtRulePrelude<'i> {
110113 /// An @layer prelude.
111114 Layer ( Vec < LayerName < ' i > > ) ,
112115 /// An @property prelude.
113- Property ( CowRcStr < ' i > )
116+ Property ( DashedIdent < ' i > )
114117}
115118
116119impl < ' a , ' i > AtRuleParser < ' i > for TopLevelRuleParser < ' a , ' i > {
@@ -168,18 +171,12 @@ impl<'a, 'i> AtRuleParser<'i> for TopLevelRuleParser<'a, 'i> {
168171 return Ok ( AtRulePrelude :: Charset )
169172 } ,
170173 "custom-media" if self . options. custom_media => {
171- let name = input. expect_ident_cloned( ) ?;
172- if !name. starts_with( "--" ) {
173- return Err ( input. new_unexpected_token_error( Token :: Ident ( name. into( ) ) ) ) ;
174- }
174+ let name = DashedIdent :: parse( input) ?;
175175 let media = MediaList :: parse( input) ?;
176176 return Ok ( AtRulePrelude :: CustomMedia ( name, media) )
177177 } ,
178178 "property" => {
179- let name = input. expect_ident_cloned( ) ?;
180- if !name. starts_with( "--" ) {
181- return Err ( input. new_unexpected_token_error( Token :: Ident ( name. into( ) ) ) ) ;
182- }
179+ let name = DashedIdent :: parse( input) ?;
183180 return Ok ( AtRulePrelude :: Property ( name) )
184181 } ,
185182 _ => { }
@@ -242,7 +239,7 @@ impl<'a, 'i> AtRuleParser<'i> for TopLevelRuleParser<'a, 'i> {
242239 AtRulePrelude :: CustomMedia ( name, query) => {
243240 self . state = State :: Body ;
244241 CssRule :: CustomMedia ( CustomMediaRule {
245- name : name . into ( ) ,
242+ name,
246243 query,
247244 loc
248245 } )
@@ -360,6 +357,10 @@ impl<'a, 'b, 'i> AtRuleParser<'i> for NestedRuleParser<'a, 'i> {
360357 // let family_names = parse_family_name_list(self.context, input)?;
361358 // Ok(AtRuleType::WithBlock(AtRuleBlockPrelude::FontFeatureValues(family_names)))
362359 // },
360+ "font-palette-values" => {
361+ let name = DashedIdent :: parse( input) ?;
362+ return Ok ( AtRulePrelude :: FontPaletteValues ( name) )
363+ } ,
363364 "counter-style" => {
364365 let name = CustomIdent :: parse( input) ?;
365366 Ok ( AtRulePrelude :: CounterStyle ( name) )
@@ -455,6 +456,10 @@ impl<'a, 'b, 'i> AtRuleParser<'i> for NestedRuleParser<'a, 'i> {
455456 // ),
456457 // ))))
457458 // },
459+ AtRulePrelude :: FontPaletteValues ( name) => {
460+ let rule = FontPaletteValuesRule :: parse ( name, input, loc) ?;
461+ Ok ( CssRule :: FontPaletteValues ( rule) )
462+ } ,
458463 AtRulePrelude :: CounterStyle ( name) => {
459464 Ok ( CssRule :: CounterStyle ( CounterStyleRule {
460465 name,
@@ -523,7 +528,7 @@ impl<'a, 'b, 'i> AtRuleParser<'i> for NestedRuleParser<'a, 'i> {
523528 } ) )
524529 } ,
525530 AtRulePrelude :: Property ( name) => {
526- Ok ( CssRule :: Property ( PropertyRule :: parse ( name. into ( ) , input, loc) ?) )
531+ Ok ( CssRule :: Property ( PropertyRule :: parse ( name, input, loc) ?) )
527532 } ,
528533 AtRulePrelude :: Import ( ..) |
529534 AtRulePrelude :: Namespace ( ..) |
0 commit comments