소스 검색

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.
Sam Atkins 1 년 전
부모
커밋
b78b5e6297
1개의 변경된 파일24개의 추가작업 그리고 0개의 파일을 삭제
  1. 24 0
      Meta/Lagom/Tools/CodeGenerators/LibWeb/GenerateCSSPropertyID.cpp

+ 24 - 0
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<PropertyID> 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<PropertyID> longhands_for_shorthand(PropertyID property_id)
 {