From b78b5e6297450478223d342521c20af897c89ea6 Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Fri, 8 Sep 2023 17:56:41 +0100 Subject: [PATCH] LibWeb: Generate `property_is_shorthand(PropertyID)` function Sometimes we want to know if a property is a shorthand, but don't care what its longhands are. --- .../LibWeb/GenerateCSSPropertyID.cpp | 24 +++++++++++++++++++ 1 file changed, 24 insertions(+) diff --git a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSPropertyID.cpp b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSPropertyID.cpp index 2f4d30eda4..93444a0b96 100644 --- a/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSPropertyID.cpp +++ b/Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSPropertyID.cpp @@ -191,6 +191,7 @@ bool property_accepts_percentage(PropertyID, Percentage const&); bool property_accepts_resolution(PropertyID, Resolution const&); bool property_accepts_time(PropertyID, Time const&); +bool property_is_shorthand(PropertyID); Vector longhands_for_shorthand(PropertyID); size_t property_maximum_value_count(PropertyID); @@ -771,6 +772,29 @@ size_t property_maximum_value_count(PropertyID property_id) generate_bounds_checking_function(properties, generator, "resolution"sv, "Resolution"sv, "Dpi"sv); generate_bounds_checking_function(properties, generator, "time"sv, "Time"sv, "S"sv); + generator.append(R"~~~( +bool property_is_shorthand(PropertyID property_id) +{ + switch (property_id) { +)~~~"); + properties.for_each_member([&](auto& name, auto& value) { + if (value.as_object().has("longhands"sv)) { + auto property_generator = generator.fork(); + property_generator.set("name:titlecase", title_casify(name)); + property_generator.append(R"~~~( + case PropertyID::@name:titlecase@: +)~~~"); + } + }); + + generator.append(R"~~~( + return true; + default: + return false; + } +} +)~~~"); + generator.append(R"~~~( Vector longhands_for_shorthand(PropertyID property_id) {