mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 19:17:44 +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;
|
||||
}
|
||||
|
||||
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 (;;) {
|
||||
rules.append(consume_a_component_value());
|
||||
auto next = next_token();
|
||||
|
||||
if (peek_token().is_comma())
|
||||
if (next.is_comma()) {
|
||||
lists.append({});
|
||||
continue;
|
||||
if (peek_token().is_eof())
|
||||
} else if (next.is_eof()) {
|
||||
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>)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue