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) {