From 384b18b27177fcb33bb6a33da65889fff3c34e22 Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Wed, 27 Dec 2023 11:48:36 +0000 Subject: [PATCH] LibWeb: Make parse_color_stop_list() a CSS Parser method This lets us remove the color/dimension-parsing lambdas, since these always forwarded to the same methods. This will make it easier to later convert those methods to take a TokenStream. --- .../LibWeb/CSS/Parser/GradientParsing.cpp | 14 +++++--------- Userland/Libraries/LibWeb/CSS/Parser/Parser.h | 2 ++ 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/Userland/Libraries/LibWeb/CSS/Parser/GradientParsing.cpp b/Userland/Libraries/LibWeb/CSS/Parser/GradientParsing.cpp index 9b40feb2e33..80c99111d0b 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/GradientParsing.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/GradientParsing.cpp @@ -18,7 +18,7 @@ namespace Web::CSS::Parser { template -static Optional> parse_color_stop_list(auto& tokens, auto is_position, auto get_position, auto parse_color, auto parse_dimension) +Optional> Parser::parse_color_stop_list(TokenStream& tokens, auto is_position, auto get_position) { enum class ElementType { Garbage, @@ -46,13 +46,13 @@ static Optional> parse_color_stop_list(auto& tokens, auto is_po return ElementType::ColorHint; } // - auto maybe_color = parse_color(tokens.next_token()); + auto maybe_color = parse_color_value(tokens.next_token()); if (!maybe_color) return ElementType::Garbage; color = maybe_color.release_nonnull(); } else { // [ ?] - auto maybe_color = parse_color(token); + auto maybe_color = parse_color_value(token); if (!maybe_color) return ElementType::Garbage; color = maybe_color.release_nonnull(); @@ -124,9 +124,7 @@ Optional> Parser::parse_linear_color_stop_lis return parse_color_stop_list( tokens, [](Dimension& dimension) { return dimension.is_length_percentage(); }, - [](Dimension& dimension) { return dimension.length_percentage(); }, - [&](auto& token) { return parse_color_value(token); }, - [&](auto& token) { return parse_dimension(token); }); + [](Dimension& dimension) { return dimension.length_percentage(); }); } Optional> Parser::parse_angular_color_stop_list(TokenStream& tokens) @@ -136,9 +134,7 @@ Optional> Parser::parse_angular_color_stop_l return parse_color_stop_list( tokens, [](Dimension& dimension) { return dimension.is_angle_percentage(); }, - [](Dimension& dimension) { return dimension.angle_percentage(); }, - [&](auto& token) { return parse_color_value(token); }, - [&](auto& token) { return parse_dimension(token); }); + [](Dimension& dimension) { return dimension.angle_percentage(); }); } RefPtr Parser::parse_linear_gradient_function(ComponentValue const& component_value) diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.h b/Userland/Libraries/LibWeb/CSS/Parser/Parser.h index 3f322adb42b..9e05a001c34 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.h +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.h @@ -198,6 +198,8 @@ private: Optional parse_url_function(ComponentValue const&); RefPtr parse_url_value(ComponentValue const&); + template + Optional> parse_color_stop_list(TokenStream& tokens, auto is_position, auto get_position); Optional> parse_linear_color_stop_list(TokenStream&); Optional> parse_angular_color_stop_list(TokenStream&);