mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-05-30 15:02:56 +00:00
LibWeb: Update parser with more insertion modes :^)
Implements handling of InHeadNoScript, InSelectInTable, InTemplate, InFrameset, AfterFrameset, and AfterAfterFrameset.
This commit is contained in:
parent
8e24a17d0d
commit
5eb39a5f61
Notes:
sideshowbarker
2024-07-19 05:29:53 +09:00
Author: https://github.com/stelar7
Commit: 5eb39a5f61
Pull-request: https://github.com/SerenityOS/serenity/pull/2604
6 changed files with 471 additions and 30 deletions
|
@ -118,12 +118,40 @@ public:
|
|||
{
|
||||
ASSERT(is_start_tag() || is_end_tag());
|
||||
for (auto& attribute : m_tag.attributes) {
|
||||
if (attribute_name == attribute.name_builder.string_view())
|
||||
if (attribute_name == attribute.local_name_builder.string_view())
|
||||
return attribute.value_builder.string_view();
|
||||
}
|
||||
return {};
|
||||
}
|
||||
|
||||
void adjust_attribute_name(const FlyString& old_name, const FlyString& new_name)
|
||||
{
|
||||
ASSERT(is_start_tag() || is_end_tag());
|
||||
for (auto& attribute : m_tag.attributes) {
|
||||
if (old_name == attribute.local_name_builder.string_view()) {
|
||||
attribute.local_name_builder.clear();
|
||||
attribute.local_name_builder.append(new_name);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void adjust_foreign_attribute(const FlyString& old_name, const FlyString& prefix, const FlyString& local_name, const FlyString& namespace_)
|
||||
{
|
||||
ASSERT(is_start_tag() || is_end_tag());
|
||||
for (auto& attribute : m_tag.attributes) {
|
||||
if (old_name == attribute.local_name_builder.string_view()) {
|
||||
attribute.prefix_builder.clear();
|
||||
attribute.prefix_builder.append(prefix);
|
||||
|
||||
attribute.local_name_builder.clear();
|
||||
attribute.local_name_builder.append(local_name);
|
||||
|
||||
attribute.namespace_builder.clear();
|
||||
attribute.namespace_builder.append(namespace_);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void drop_attributes()
|
||||
{
|
||||
ASSERT(is_start_tag() || is_end_tag());
|
||||
|
@ -136,7 +164,9 @@ public:
|
|||
|
||||
private:
|
||||
struct AttributeBuilder {
|
||||
StringBuilder name_builder;
|
||||
StringBuilder prefix_builder;
|
||||
StringBuilder local_name_builder;
|
||||
StringBuilder namespace_builder;
|
||||
StringBuilder value_builder;
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue