mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-07-28 11:49:44 +00:00
LibWeb: Dump CSSDescriptors in a generic way
This replaces the need for bespoke (and verbose) dumping for each at-rule that has descriptors.
This commit is contained in:
parent
f0ce4f43a6
commit
fbdef98307
Notes:
github-actions[bot]
2025-05-08 15:22:39 +00:00
Author: https://github.com/AtkinsSJ
Commit: fbdef98307
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/4654
3 changed files with 17 additions and 88 deletions
|
@ -9,11 +9,13 @@
|
|||
#include <AK/QuickSort.h>
|
||||
#include <AK/StringBuilder.h>
|
||||
#include <AK/Utf8View.h>
|
||||
#include <LibWeb/CSS/CSSDescriptors.h>
|
||||
#include <LibWeb/CSS/CSSFontFaceRule.h>
|
||||
#include <LibWeb/CSS/CSSImportRule.h>
|
||||
#include <LibWeb/CSS/CSSLayerBlockRule.h>
|
||||
#include <LibWeb/CSS/CSSLayerStatementRule.h>
|
||||
#include <LibWeb/CSS/CSSMediaRule.h>
|
||||
#include <LibWeb/CSS/CSSNamespaceRule.h>
|
||||
#include <LibWeb/CSS/CSSNestedDeclarations.h>
|
||||
#include <LibWeb/CSS/CSSPropertyRule.h>
|
||||
#include <LibWeb/CSS/CSSRule.h>
|
||||
|
@ -24,7 +26,6 @@
|
|||
#include <LibWeb/CSS/ComputedProperties.h>
|
||||
#include <LibWeb/CSS/PropertyID.h>
|
||||
#include <LibWeb/CSS/PseudoClass.h>
|
||||
#include <LibWeb/DOM/Comment.h>
|
||||
#include <LibWeb/DOM/Document.h>
|
||||
#include <LibWeb/DOM/Element.h>
|
||||
#include <LibWeb/DOM/ShadowRoot.h>
|
||||
|
@ -704,93 +705,9 @@ void dump_rule(StringBuilder& builder, CSS::CSSRule const& rule, int indent_leve
|
|||
|
||||
void dump_font_face_rule(StringBuilder& builder, CSS::CSSFontFaceRule const& rule, int indent_levels)
|
||||
{
|
||||
auto const font_face = rule.font_face();
|
||||
indent(builder, indent_levels + 1);
|
||||
builder.appendff("VALID: {}\n", rule.is_valid());
|
||||
|
||||
indent(builder, indent_levels + 1);
|
||||
builder.appendff("font-family: {}\n", font_face.font_family());
|
||||
|
||||
if (font_face.weight().has_value()) {
|
||||
indent(builder, indent_levels + 1);
|
||||
builder.appendff("weight: {}\n", font_face.weight().value());
|
||||
}
|
||||
|
||||
if (font_face.slope().has_value()) {
|
||||
indent(builder, indent_levels + 1);
|
||||
builder.appendff("slope: {}\n", font_face.slope().value());
|
||||
}
|
||||
|
||||
if (font_face.width().has_value()) {
|
||||
indent(builder, indent_levels + 1);
|
||||
builder.appendff("width: {}\n", font_face.width().value());
|
||||
}
|
||||
|
||||
indent(builder, indent_levels + 1);
|
||||
builder.append("sources:\n"sv);
|
||||
for (auto const& [local_or_url, format] : font_face.sources()) {
|
||||
indent(builder, indent_levels + 2);
|
||||
local_or_url.visit(
|
||||
[&builder, &format](CSS::URL const& url) {
|
||||
builder.appendff("url={}, format={}\n", url, format.value_or("???"_string));
|
||||
},
|
||||
[&builder](FlyString const& local) {
|
||||
builder.appendff("local={}\n", local);
|
||||
});
|
||||
}
|
||||
|
||||
indent(builder, indent_levels + 1);
|
||||
builder.append("unicode-ranges:\n"sv);
|
||||
for (auto const& unicode_range : font_face.unicode_ranges()) {
|
||||
indent(builder, indent_levels + 2);
|
||||
builder.appendff("{}\n", unicode_range.to_string());
|
||||
}
|
||||
|
||||
if (font_face.ascent_override().has_value()) {
|
||||
indent(builder, indent_levels + 1);
|
||||
builder.appendff("ascent-override: {}\n", font_face.ascent_override().value());
|
||||
}
|
||||
if (font_face.descent_override().has_value()) {
|
||||
indent(builder, indent_levels + 1);
|
||||
builder.appendff("descent-override: {}\n", font_face.descent_override().value());
|
||||
}
|
||||
if (font_face.line_gap_override().has_value()) {
|
||||
indent(builder, indent_levels + 1);
|
||||
builder.appendff("line-gap-override: {}\n", font_face.line_gap_override().value());
|
||||
}
|
||||
|
||||
indent(builder, indent_levels + 1);
|
||||
builder.appendff("display: {}\n", CSS::to_string(font_face.font_display()));
|
||||
|
||||
if (font_face.font_named_instance().has_value()) {
|
||||
indent(builder, indent_levels + 1);
|
||||
builder.appendff("named-instance: {}\n", font_face.font_named_instance().value());
|
||||
}
|
||||
|
||||
if (font_face.font_language_override().has_value()) {
|
||||
indent(builder, indent_levels + 1);
|
||||
builder.appendff("language-override: {}\n", font_face.font_language_override().value());
|
||||
}
|
||||
|
||||
if (font_face.font_feature_settings().has_value()) {
|
||||
indent(builder, indent_levels + 1);
|
||||
builder.append("feature-settings:"sv);
|
||||
auto const& entries = font_face.font_feature_settings().value();
|
||||
for (auto const& [name, value] : entries) {
|
||||
builder.appendff(" {}={}", name, value);
|
||||
}
|
||||
builder.append("\n"sv);
|
||||
}
|
||||
|
||||
if (font_face.font_variation_settings().has_value()) {
|
||||
indent(builder, indent_levels + 1);
|
||||
builder.append("variation-settings:"sv);
|
||||
auto const& entries = font_face.font_variation_settings().value();
|
||||
for (auto const& [name, value] : entries) {
|
||||
builder.appendff(" {}={}", name, value);
|
||||
}
|
||||
builder.append("\n"sv);
|
||||
}
|
||||
dump_descriptors(builder, rule.descriptors(), indent_levels + 1);
|
||||
}
|
||||
|
||||
void dump_import_rule(StringBuilder& builder, CSS::CSSImportRule const& rule, int indent_levels)
|
||||
|
@ -876,6 +793,17 @@ void dump_style_properties(StringBuilder& builder, CSS::CSSStyleProperties const
|
|||
}
|
||||
}
|
||||
|
||||
void dump_descriptors(StringBuilder& builder, CSS::CSSDescriptors const& descriptors, int indent_levels)
|
||||
{
|
||||
indent(builder, indent_levels);
|
||||
builder.appendff("Declarations ({}):\n", descriptors.length());
|
||||
for (auto const& descriptor : descriptors.descriptors()) {
|
||||
indent(builder, indent_levels);
|
||||
builder.appendff(" {}: '{}'", CSS::to_string(descriptor.descriptor_id), descriptor.value->to_string(CSS::CSSStyleValue::SerializationMode::Normal));
|
||||
builder.append('\n');
|
||||
}
|
||||
}
|
||||
|
||||
void dump_style_rule(StringBuilder& builder, CSS::CSSStyleRule const& rule, int indent_levels)
|
||||
{
|
||||
for (auto& selector : rule.selectors()) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue