1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 22:28:11 +00:00

LibWeb: Add Layout::Node::debug_description()

This returns a String with this format:

- LayoutNodeClassName<TAG_NAME>#id.class1.class2.class3

I've rewritten this function 10+ times at this point, so I'm just gonna
add it to the repository for future debugging needs. :^)
This commit is contained in:
Andreas Kling 2022-02-19 16:39:32 +01:00
parent cf5eeb9f4b
commit c8051f8b5b
2 changed files with 20 additions and 0 deletions

View file

@ -527,6 +527,25 @@ String Node::class_name() const
return demangle(typeid(*this).name());
}
String Node::debug_description() const
{
StringBuilder builder;
builder.append(class_name().substring_view(13));
if (dom_node()) {
builder.appendff("<{}>", dom_node()->node_name());
if (dom_node()->is_element()) {
auto& element = static_cast<DOM::Element const&>(*dom_node());
if (auto id = element.get_attribute(HTML::AttributeNames::id); !id.is_null())
builder.appendff("#{}", id);
for (auto const& class_name : element.class_names())
builder.appendff(".{}", class_name);
}
} else {
builder.append("(anonymous)");
}
return builder.to_string();
}
bool Node::is_inline_block() const
{
return is_inline() && is<BlockContainer>(*this);

View file

@ -74,6 +74,7 @@ public:
bool is_root_element() const;
String class_name() const;
String debug_description() const;
bool has_style() const { return m_has_style; }