mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 02:47:34 +00:00
LibWeb: Bring CSS::Parser::parse_as_comma_separated_list...() to spec
Previous implementation was returning everything in a single Vector, when what we really want is a Vector of Vectors, one for each comma- separated part of the list.
This commit is contained in:
parent
985ed47a38
commit
390cc30a97
2 changed files with 22 additions and 7 deletions
|
@ -833,20 +833,35 @@ Vector<StyleComponentValueRule> Parser::parse_as_list_of_component_values()
|
||||||
return rules;
|
return rules;
|
||||||
}
|
}
|
||||||
|
|
||||||
Vector<StyleComponentValueRule> Parser::parse_as_list_of_comma_separated_component_values()
|
Vector<Vector<StyleComponentValueRule>> Parser::parse_as_comma_separated_list_of_component_values()
|
||||||
{
|
{
|
||||||
Vector<StyleComponentValueRule> rules;
|
Vector<Vector<StyleComponentValueRule>> lists;
|
||||||
|
lists.append({});
|
||||||
|
|
||||||
for (;;) {
|
for (;;) {
|
||||||
rules.append(consume_a_component_value());
|
auto next = next_token();
|
||||||
|
|
||||||
if (peek_token().is_comma())
|
if (next.is_comma()) {
|
||||||
|
lists.append({});
|
||||||
continue;
|
continue;
|
||||||
if (peek_token().is_eof())
|
} else if (next.is_eof()) {
|
||||||
break;
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
reconsume_current_input_token();
|
||||||
|
auto component_value = consume_a_component_value();
|
||||||
|
lists.last().append(component_value);
|
||||||
}
|
}
|
||||||
|
|
||||||
return rules;
|
for (auto& list : lists) {
|
||||||
|
if (!list.is_empty() && list.first().is(Token::TokenType::Whitespace))
|
||||||
|
list.take_first();
|
||||||
|
|
||||||
|
if (!list.is_empty() && list.last().is(Token::TokenType::Whitespace))
|
||||||
|
list.take_last();
|
||||||
|
}
|
||||||
|
|
||||||
|
return lists;
|
||||||
}
|
}
|
||||||
|
|
||||||
RefPtr<CSSRule> Parser::convert_rule(NonnullRefPtr<QualifiedStyleRule>)
|
RefPtr<CSSRule> Parser::convert_rule(NonnullRefPtr<QualifiedStyleRule>)
|
||||||
|
|
|
@ -46,7 +46,7 @@ public:
|
||||||
// For the contents of presentational attributes, which parse text into a single declaration’s value, or for parsing a stand-alone selector [SELECT] or list of Media Queries [MEDIAQ], as in Selectors API or the media HTML attribute.
|
// For the contents of presentational attributes, which parse text into a single declaration’s value, or for parsing a stand-alone selector [SELECT] or list of Media Queries [MEDIAQ], as in Selectors API or the media HTML attribute.
|
||||||
Vector<StyleComponentValueRule> parse_as_list_of_component_values();
|
Vector<StyleComponentValueRule> parse_as_list_of_component_values();
|
||||||
|
|
||||||
Vector<StyleComponentValueRule> parse_as_list_of_comma_separated_component_values();
|
Vector<Vector<StyleComponentValueRule>> parse_as_comma_separated_list_of_component_values();
|
||||||
|
|
||||||
Vector<CSS::Selector::ComplexSelector> parse_selectors(Vector<StyleComponentValueRule> parts);
|
Vector<CSS::Selector::ComplexSelector> parse_selectors(Vector<StyleComponentValueRule> parts);
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue