mirror of
https://github.com/RGBCube/serenity
synced 2025-07-26 00:47:34 +00:00
LibWeb: Convert CSS parse_{color,length}() lambdas into methods
This lets us get the Length and Color values directly, without having to create a StyleValue object and then throw it away again, when parsing the box-shadow property in the next commit.
This commit is contained in:
parent
1b72766e4e
commit
697bffa3bd
2 changed files with 222 additions and 218 deletions
|
@ -1414,9 +1414,8 @@ RefPtr<StyleValue> Parser::parse_keyword_or_custom_value(ParsingContext const&,
|
|||
return {};
|
||||
}
|
||||
|
||||
RefPtr<StyleValue> Parser::parse_length_value(ParsingContext const& context, StyleComponentValueRule const& component_value)
|
||||
Optional<Length> Parser::parse_length(ParsingContext const& context, StyleComponentValueRule const& component_value)
|
||||
{
|
||||
auto parse_length = [&]() -> Optional<Length> {
|
||||
Length::Type type = Length::Type::Undefined;
|
||||
Optional<float> numeric_value;
|
||||
|
||||
|
@ -1478,10 +1477,12 @@ RefPtr<StyleValue> Parser::parse_length_value(ParsingContext const& context, Sty
|
|||
return {};
|
||||
|
||||
return Length(numeric_value.value(), type);
|
||||
};
|
||||
}
|
||||
|
||||
RefPtr<StyleValue> Parser::parse_length_value(ParsingContext const& context, StyleComponentValueRule const& component_value)
|
||||
{
|
||||
if (component_value.is(Token::Type::Dimension) || component_value.is(Token::Type::Number) || component_value.is(Token::Type::Percentage)) {
|
||||
auto length = parse_length();
|
||||
auto length = parse_length(context, component_value);
|
||||
if (length.has_value())
|
||||
return LengthStyleValue::create(length.value());
|
||||
}
|
||||
|
@ -1516,10 +1517,9 @@ RefPtr<StyleValue> Parser::parse_identifier_value(ParsingContext const&, StyleCo
|
|||
return {};
|
||||
}
|
||||
|
||||
RefPtr<StyleValue> Parser::parse_color_value(ParsingContext const&, StyleComponentValueRule const& component_value)
|
||||
Optional<Color> Parser::parse_color(ParsingContext const&, StyleComponentValueRule const& component_value)
|
||||
{
|
||||
// https://www.w3.org/TR/css-color-3/
|
||||
auto parse_css_color = [&]() -> Optional<Color> {
|
||||
if (component_value.is(Token::Type::Ident)) {
|
||||
auto ident = component_value.token().ident();
|
||||
if (ident.equals_ignoring_case("transparent"))
|
||||
|
@ -1685,9 +1685,11 @@ RefPtr<StyleValue> Parser::parse_color_value(ParsingContext const&, StyleCompone
|
|||
}
|
||||
|
||||
return {};
|
||||
};
|
||||
}
|
||||
|
||||
auto color = parse_css_color();
|
||||
RefPtr<StyleValue> Parser::parse_color_value(ParsingContext const& context, StyleComponentValueRule const& component_value)
|
||||
{
|
||||
auto color = parse_color(context, component_value);
|
||||
if (color.has_value())
|
||||
return ColorStyleValue::create(color.value());
|
||||
|
||||
|
|
|
@ -165,6 +165,8 @@ private:
|
|||
[[nodiscard]] Optional<StyleProperty> convert_to_style_property(StyleDeclarationRule&);
|
||||
|
||||
static Optional<float> try_parse_float(StringView string);
|
||||
static Optional<Color> parse_color(ParsingContext const&, StyleComponentValueRule const&);
|
||||
static Optional<Length> parse_length(ParsingContext const&, StyleComponentValueRule const&);
|
||||
static Optional<URL> parse_url_function(ParsingContext const&, StyleComponentValueRule const&);
|
||||
|
||||
static RefPtr<StyleValue> parse_keyword_or_custom_value(ParsingContext const&, StyleComponentValueRule const&);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue