From cf07da082ecee03768ad17d124b359f3b5bf4478 Mon Sep 17 00:00:00 2001 From: Sam Atkins Date: Wed, 24 Nov 2021 12:57:21 +0000 Subject: [PATCH] LibWeb: Implement CSS::Token::to_string() This outputs valid CSS, as opposed to to_debug_string(). --- .../Libraries/LibWeb/CSS/Parser/Token.cpp | 62 +++++++++++++++++++ Userland/Libraries/LibWeb/CSS/Parser/Token.h | 1 + 2 files changed, 63 insertions(+) diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Token.cpp b/Userland/Libraries/LibWeb/CSS/Parser/Token.cpp index 38a3262c4b..a45fcbf4aa 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Token.cpp +++ b/Userland/Libraries/LibWeb/CSS/Parser/Token.cpp @@ -6,9 +6,71 @@ #include #include +#include namespace Web::CSS { +String Token::to_string() const +{ + StringBuilder builder; + + switch (m_type) { + case Type::EndOfFile: + return ""; + case Type::Ident: + return serialize_an_identifier(ident()); + case Type::Function: + return String::formatted("{}(", serialize_an_identifier(function())); + case Type::AtKeyword: + return String::formatted("@{}", serialize_an_identifier(at_keyword())); + case Type::Hash: + return String::formatted("#{}", serialize_an_identifier(hash_value())); + case Type::String: + return serialize_a_string(string()); + case Type::BadString: + return ""; + case Type::Url: + return serialize_a_url(url()); + case Type::BadUrl: + return "url()"; + case Type::Delim: + return m_value; + case Type::Number: + return String::number(m_number_value); + case Type::Percentage: + return String::formatted("{}%", m_number_value); + case Type::Dimension: + return String::formatted("{}{}", m_number_value, m_unit); + case Type::Whitespace: + return " "; + case Type::CDO: + return ""; + case Type::Colon: + return ":"; + case Type::Semicolon: + return ";"; + case Type::Comma: + return ","; + case Type::OpenSquare: + return "["; + case Type::CloseSquare: + return "]"; + case Type::OpenParen: + return "("; + case Type::CloseParen: + return ")"; + case Type::OpenCurly: + return "{"; + case Type::CloseCurly: + return "}"; + case Type::Invalid: + default: + VERIFY_NOT_REACHED(); + } +} + String Token::to_debug_string() const { StringBuilder builder; diff --git a/Userland/Libraries/LibWeb/CSS/Parser/Token.h b/Userland/Libraries/LibWeb/CSS/Parser/Token.h index 99886308a8..bb58eaa7a1 100644 --- a/Userland/Libraries/LibWeb/CSS/Parser/Token.h +++ b/Userland/Libraries/LibWeb/CSS/Parser/Token.h @@ -157,6 +157,7 @@ public: String bracket_string() const; String bracket_mirror_string() const; + String to_string() const; String to_debug_string() const; Position const& start_position() const { return m_start_position; }