diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp index 895b59eec3..4807d92f8f 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/Parser.cpp @@ -8932,28 +8932,9 @@ ErrorOr> Parser::parse_a_calculation(Vector CalculationNode::constant_type_from_string(StringView string) +{ + if (string.equals_ignoring_ascii_case("e"sv)) + return CalculationNode::ConstantType::E; + + if (string.equals_ignoring_ascii_case("pi"sv)) + return CalculationNode::ConstantType::Pi; + + if (string.equals_ignoring_ascii_case("infinity"sv)) + return CalculationNode::ConstantType::Infinity; + + if (string.equals_ignoring_ascii_case("-infinity"sv)) + return CalculationNode::ConstantType::MinusInfinity; + + if (string.equals_ignoring_ascii_case("NaN"sv)) + return CalculationNode::ConstantType::NaN; + + return {}; +} + CalculationNode::CalculationNode(Type type) : m_type(type) { @@ -974,7 +994,7 @@ ErrorOr ConstantCalculationNode::to_string() const switch (m_constant) { case CalculationNode::ConstantType::E: return "e"_short_string; - case CalculationNode::ConstantType::PI: + case CalculationNode::ConstantType::Pi: return "pi"_short_string; case CalculationNode::ConstantType::Infinity: return "infinity"_string; @@ -1005,7 +1025,7 @@ CalculatedStyleValue::CalculationResult ConstantCalculationNode::resolve([[maybe switch (m_constant) { case CalculationNode::ConstantType::E: return { Number(Number::Type::Number, M_E) }; - case CalculationNode::ConstantType::PI: + case CalculationNode::ConstantType::Pi: return { Number(Number::Type::Number, M_PI) }; // FIXME: We need to keep track of Infinity and NaN across all nodes, since they require special handling. case CalculationNode::ConstantType::Infinity: diff --git a/Userland/Libraries/LibWeb/CSS/StyleValues/CalculatedStyleValue.h b/Userland/Libraries/LibWeb/CSS/StyleValues/CalculatedStyleValue.h index 601ee524c2..d50bac72ec 100644 --- a/Userland/Libraries/LibWeb/CSS/StyleValues/CalculatedStyleValue.h +++ b/Userland/Libraries/LibWeb/CSS/StyleValues/CalculatedStyleValue.h @@ -124,11 +124,12 @@ public: // https://drafts.csswg.org/css-values-4/#calc-error-constants enum class ConstantType { E, - PI, + Pi, NaN, Infinity, MinusInfinity, }; + static Optional constant_type_from_string(StringView); enum class Type { Numeric,