@@ -4814,25 +4814,18 @@ RefPtr<StyleValue> Parser::parse_easing_value(TokenStream<ComponentValue>& token
4814
4814
return EasingStyleValue::create (function, move (values));
4815
4815
}
4816
4816
4817
- RefPtr<StyleValue> Parser::parse_transform_value (Vector <ComponentValue> const & component_values )
4817
+ RefPtr<StyleValue> Parser::parse_transform_value (TokenStream <ComponentValue>& tokens )
4818
4818
{
4819
+ if (contains_single_none_ident (tokens)) {
4820
+ tokens.next_token (); // none
4821
+ return IdentifierStyleValue::create (ValueID::None);
4822
+ }
4823
+
4819
4824
StyleValueVector transformations;
4820
- auto tokens = TokenStream { component_values };
4821
- tokens.skip_whitespace ();
4825
+ auto transaction = tokens.begin_transaction ();
4822
4826
4823
4827
while (tokens.has_next_token ()) {
4824
- tokens.skip_whitespace ();
4825
4828
auto const & part = tokens.next_token ();
4826
-
4827
- if (part.is_ident (" none" sv)) {
4828
- if (!transformations.is_empty ())
4829
- return nullptr ;
4830
- tokens.skip_whitespace ();
4831
- if (tokens.has_next_token ())
4832
- return nullptr ;
4833
- return IdentifierStyleValue::create (ValueID::None);
4834
- }
4835
-
4836
4829
if (!part.is_function ())
4837
4830
return nullptr ;
4838
4831
auto maybe_function = transform_function_from_string (part.function ().name ());
@@ -4936,6 +4929,7 @@ RefPtr<StyleValue> Parser::parse_transform_value(Vector<ComponentValue> const& c
4936
4929
4937
4930
transformations.append (TransformationStyleValue::create (function, move (values)));
4938
4931
}
4932
+ transaction.commit ();
4939
4933
return StyleValueList::create (move (transformations), StyleValueList::Separator::Space);
4940
4934
}
4941
4935
@@ -5944,7 +5938,7 @@ Parser::ParseErrorOr<NonnullRefPtr<StyleValue>> Parser::parse_css_value(Property
5944
5938
return parsed_value.release_nonnull ();
5945
5939
return ParseError::SyntaxError;
5946
5940
case PropertyID::Transform:
5947
- if (auto parsed_value = parse_transform_value (component_values ))
5941
+ if (auto parsed_value = parse_transform_value (tokens); parsed_value && !tokens. has_next_token ( ))
5948
5942
return parsed_value.release_nonnull ();
5949
5943
return ParseError::SyntaxError;
5950
5944
case PropertyID::TransformOrigin:
0 commit comments