LibWeb/CSS: Reimplement var()/attr() as arbitrary substitution functions

"Arbitrary substitution functions" are a family of functions that
includes var() and attr(). All of them resolve to an arbitrary set of
component values that are not known at parse-time, so they have to be
substituted at computed-value time.

Besides it being nice to follow the spec closely, this means we'll be
able to implement the others (such as `if()` and `inherit()`) more
easily.

The main omission here is the new "spread syntax", which can be
implemented in the future.
This commit is contained in:
Sam Atkins 2025-06-19 17:03:26 +01:00 committed by Tim Ledbetter
commit b6032b0fcd
Notes: github-actions[bot] 2025-07-09 15:45:46 +00:00
11 changed files with 480 additions and 346 deletions

View file

@ -132,6 +132,7 @@ set(SOURCES
CSS/Number.cpp
CSS/PageSelector.cpp
CSS/ParsedFontFace.cpp
CSS/Parser/ArbitrarySubstitutionFunctions.cpp
CSS/Parser/ComponentValue.cpp
CSS/Parser/DescriptorParsing.cpp
CSS/Parser/GradientParsing.cpp