From ceeaf352c8d1daf8ef62ae8c6b7018cd7dd9c139 Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Wed, 2 Apr 2025 16:32:49 +0100 Subject: [PATCH] LibWeb/CSS: Un-template parse_comma_separated_value_list() This doesn't need to be a template. Changing it means we can use it from any FooParsing.cpp file, and also move it ValueParsing.cpp where it belongs. --- Libraries/LibWeb/CSS/Parser/Parser.h | 2 +- .../LibWeb/CSS/Parser/PropertyParsing.cpp | 24 ------------------- Libraries/LibWeb/CSS/Parser/ValueParsing.cpp | 24 +++++++++++++++++++ 3 files changed, 25 insertions(+), 25 deletions(-) diff --git a/Libraries/LibWeb/CSS/Parser/Parser.h b/Libraries/LibWeb/CSS/Parser/Parser.h index 73b4e1cbf6a..15dc7b06fdf 100644 --- a/Libraries/LibWeb/CSS/Parser/Parser.h +++ b/Libraries/LibWeb/CSS/Parser/Parser.h @@ -358,7 +358,7 @@ private: RefPtr parse_time_value(TokenStream&); RefPtr parse_time_percentage_value(TokenStream&); - template + using ParseFunction = AK::Function(TokenStream&)>; RefPtr parse_comma_separated_value_list(TokenStream&, ParseFunction); RefPtr parse_simple_comma_separated_value_list(PropertyID, TokenStream&); RefPtr parse_all_as_single_keyword_value(TokenStream&, Keyword); diff --git a/Libraries/LibWeb/CSS/Parser/PropertyParsing.cpp b/Libraries/LibWeb/CSS/Parser/PropertyParsing.cpp index fc3e06b7a6f..d1342cf61ff 100644 --- a/Libraries/LibWeb/CSS/Parser/PropertyParsing.cpp +++ b/Libraries/LibWeb/CSS/Parser/PropertyParsing.cpp @@ -80,30 +80,6 @@ RefPtr Parser::parse_all_as_single_keyword_value(TokenStream -RefPtr Parser::parse_comma_separated_value_list(TokenStream& tokens, ParseFunction parse_one_value) -{ - auto first = parse_one_value(tokens); - if (!first || !tokens.has_next_token()) - return first; - - StyleValueVector values; - values.append(first.release_nonnull()); - - while (tokens.has_next_token()) { - if (!tokens.consume_a_token().is(Token::Type::Comma)) - return nullptr; - - if (auto maybe_value = parse_one_value(tokens)) { - values.append(maybe_value.release_nonnull()); - continue; - } - return nullptr; - } - - return StyleValueList::create(move(values), StyleValueList::Separator::Comma); -} - RefPtr Parser::parse_simple_comma_separated_value_list(PropertyID property_id, TokenStream& tokens) { return parse_comma_separated_value_list(tokens, [this, property_id](auto& tokens) -> RefPtr { diff --git a/Libraries/LibWeb/CSS/Parser/ValueParsing.cpp b/Libraries/LibWeb/CSS/Parser/ValueParsing.cpp index afdd2c6d606..19446cde0ec 100644 --- a/Libraries/LibWeb/CSS/Parser/ValueParsing.cpp +++ b/Libraries/LibWeb/CSS/Parser/ValueParsing.cpp @@ -54,6 +54,7 @@ #include #include #include +#include #include #include #include @@ -64,6 +65,29 @@ namespace Web::CSS::Parser { +RefPtr Parser::parse_comma_separated_value_list(TokenStream& tokens, ParseFunction parse_one_value) +{ + auto first = parse_one_value(tokens); + if (!first || !tokens.has_next_token()) + return first; + + StyleValueVector values; + values.append(first.release_nonnull()); + + while (tokens.has_next_token()) { + if (!tokens.consume_a_token().is(Token::Type::Comma)) + return nullptr; + + if (auto maybe_value = parse_one_value(tokens)) { + values.append(maybe_value.release_nonnull()); + continue; + } + return nullptr; + } + + return StyleValueList::create(move(values), StyleValueList::Separator::Comma); +} + Optional Parser::parse_dimension(ComponentValue const& component_value) { if (component_value.is(Token::Type::Dimension)) {