Files
serenity/Userland/Libraries/LibWeb/CSS/StyleValues/UnresolvedStyleValue.cpp
Sam Atkins fbca9efcbe LibWeb/CSS: Preserve whitespace and comments in custom properties
A couple of parts of this:
- Store the source text for Declarations of custom properties.
- Then save that in the UnresolvedStyleValue.
- Serialize UnresolvedStyleValue using the saved source when available -
  that is, for custom properties but not for regular properties that
  include var() or attr().

(cherry picked from commit bf3e6daedbc8fd0d8e03f5f0eafebf5bbe3abf03)
2024-11-17 23:31:49 -05:00

35 lines
911 B
C++

/*
* Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
* Copyright (c) 2021, Tobias Christiansen <tobyase@serenityos.org>
* Copyright (c) 2021-2024, Sam Atkins <sam@ladybird.org>
* Copyright (c) 2022-2023, MacDue <macdue@dueutil.tech>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include "UnresolvedStyleValue.h"
#include <AK/StringBuilder.h>
namespace Web::CSS {
String UnresolvedStyleValue::to_string() const
{
if (m_original_source_text.has_value())
return *m_original_source_text;
StringBuilder builder;
for (auto& value : m_values)
builder.append(value.to_string());
return MUST(builder.to_string());
}
bool UnresolvedStyleValue::equals(CSSStyleValue const& other) const
{
if (type() != other.type())
return false;
// This is a case where comparing the strings actually makes sense.
return to_string() == other.to_string();
}
}