@@ -1269,6 +1269,21 @@ where
12691269 } )
12701270}
12711271
1272+ fn parse_modern_alpha < ' i , ' t , P > (
1273+ color_parser : & P ,
1274+ arguments : & mut Parser < ' i , ' t > ,
1275+ ) -> Result < Option < f32 > , ParseError < ' i , P :: Error > >
1276+ where
1277+ P : ColorParser < ' i > ,
1278+ {
1279+ if !arguments. is_exhausted ( ) {
1280+ arguments. expect_delim ( '/' ) ?;
1281+ parse_none_or ( arguments, |p| parse_alpha_component ( color_parser, p) )
1282+ } else {
1283+ Ok ( Some ( OPAQUE ) )
1284+ }
1285+ }
1286+
12721287#[ inline]
12731288fn parse_rgb < ' i , ' t , P > (
12741289 color_parser : & P ,
@@ -1324,12 +1339,7 @@ where
13241339 color_parser. parse_number_or_percentage ( p)
13251340 } ) ?) ;
13261341
1327- if !arguments. is_exhausted ( ) {
1328- arguments. expect_delim ( '/' ) ?;
1329- parse_none_or ( arguments, |p| parse_alpha_component ( color_parser, p) ) ?. unwrap_or ( 0.0 )
1330- } else {
1331- OPAQUE
1332- }
1342+ parse_modern_alpha ( color_parser, arguments) ?. unwrap_or ( 0.0 )
13331343 } ;
13341344
13351345 Ok ( P :: Output :: from_rgba ( red, green, blue, alpha) )
@@ -1364,12 +1374,7 @@ where
13641374 saturation = parse_none_or ( arguments, |p| color_parser. parse_percentage ( p) ) ?. unwrap_or ( 0.0 ) ;
13651375 lightness = parse_none_or ( arguments, |p| color_parser. parse_percentage ( p) ) ?. unwrap_or ( 0.0 ) ;
13661376
1367- if !arguments. is_exhausted ( ) {
1368- arguments. expect_delim ( '/' ) ?;
1369- parse_none_or ( arguments, |p| parse_alpha_component ( color_parser, p) ) ?. unwrap_or ( 0.0 )
1370- } else {
1371- OPAQUE
1372- }
1377+ parse_modern_alpha ( color_parser, arguments) ?. unwrap_or ( 0.0 )
13731378 } ;
13741379
13751380 let hue = if let Some ( h) = maybe_hue {
@@ -1570,12 +1575,7 @@ where
15701575 let r2 = parse_none_or ( input, |p| f2 ( color_parser, p) ) ?;
15711576 let r3 = parse_none_or ( input, |p| f3 ( color_parser, p) ) ?;
15721577
1573- let alpha = if !input. is_exhausted ( ) {
1574- input. expect_delim ( '/' ) ?;
1575- parse_none_or ( input, |p| parse_alpha_component ( color_parser, p) ) ?
1576- } else {
1577- Some ( OPAQUE )
1578- } ;
1578+ let alpha = parse_modern_alpha ( color_parser, input) ?;
15791579
15801580 Ok ( ( r1, r2, r3, alpha) )
15811581}
0 commit comments