Преглед изворни кода

LibWeb: Add missing Formatters for CSS dimension types

Sam Atkins пре 2 година
родитељ
комит
ef2469bfed

+ 9 - 0
Userland/Libraries/LibWeb/CSS/Angle.h

@@ -7,6 +7,7 @@
 #pragma once
 
 #include <AK/RefPtr.h>
+#include <AK/String.h>
 #include <LibWeb/Forward.h>
 
 namespace Web::CSS {
@@ -55,3 +56,11 @@ private:
 };
 
 }
+
+template<>
+struct AK::Formatter<Web::CSS::Angle> : Formatter<StringView> {
+    ErrorOr<void> format(FormatBuilder& builder, Web::CSS::Angle const& angle)
+    {
+        return Formatter<StringView>::format(builder, angle.to_string());
+    }
+};

+ 10 - 0
Userland/Libraries/LibWeb/CSS/Frequency.h

@@ -7,6 +7,7 @@
 #pragma once
 
 #include <AK/RefPtr.h>
+#include <AK/String.h>
 #include <LibWeb/Forward.h>
 
 namespace Web::CSS {
@@ -50,4 +51,13 @@ private:
     float m_value { 0 };
     RefPtr<CalculatedStyleValue> m_calculated_style;
 };
+
 }
+
+template<>
+struct AK::Formatter<Web::CSS::Frequency> : Formatter<StringView> {
+    ErrorOr<void> format(FormatBuilder& builder, Web::CSS::Frequency const& frequency)
+    {
+        return Formatter<StringView>::format(builder, frequency.to_string());
+    }
+};

+ 16 - 0
Userland/Libraries/LibWeb/CSS/Number.h

@@ -6,6 +6,7 @@
 
 #pragma once
 
+#include <AK/String.h>
 #include <AK/Types.h>
 #include <math.h>
 
@@ -68,8 +69,23 @@ public:
         return { Type::Number, m_value / other.m_value };
     }
 
+    String to_string() const
+    {
+        if (m_type == Type::IntegerWithExplicitSign)
+            return String::formatted("{:+}", m_value);
+        return String::number(m_value);
+    }
+
 private:
     float m_value { 0 };
     Type m_type;
 };
 }
+
+template<>
+struct AK::Formatter<Web::CSS::Number> : Formatter<StringView> {
+    ErrorOr<void> format(FormatBuilder& builder, Web::CSS::Number const& number)
+    {
+        return Formatter<StringView>::format(builder, number.to_string());
+    }
+};

+ 9 - 0
Userland/Libraries/LibWeb/CSS/Time.h

@@ -7,6 +7,7 @@
 #pragma once
 
 #include <AK/RefPtr.h>
+#include <AK/String.h>
 #include <LibWeb/Forward.h>
 
 namespace Web::CSS {
@@ -53,3 +54,11 @@ private:
 };
 
 }
+
+template<>
+struct AK::Formatter<Web::CSS::Time> : Formatter<StringView> {
+    ErrorOr<void> format(FormatBuilder& builder, Web::CSS::Time const& time)
+    {
+        return Formatter<StringView>::format(builder, time.to_string());
+    }
+};