1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 16:38:10 +00:00

LibWeb: Port HTMLParser local name and value from DeprecatedString

This commit is contained in:
Shannon Booth 2023-10-08 12:19:41 +13:00 committed by Tim Flynn
parent e4f8c59210
commit d8635fe541
3 changed files with 85 additions and 86 deletions

View file

@ -2189,7 +2189,7 @@ void HTMLParser::handle_in_body(HTMLToken& token)
void HTMLParser::adjust_mathml_attributes(HTMLToken& token) void HTMLParser::adjust_mathml_attributes(HTMLToken& token)
{ {
token.adjust_attribute_name("definitionurl", "definitionURL"); token.adjust_attribute_name("definitionurl"_fly_string, "definitionURL"_fly_string);
} }
void HTMLParser::adjust_svg_tag_names(HTMLToken& token) void HTMLParser::adjust_svg_tag_names(HTMLToken& token)
@ -2233,81 +2233,81 @@ void HTMLParser::adjust_svg_tag_names(HTMLToken& token)
void HTMLParser::adjust_svg_attributes(HTMLToken& token) void HTMLParser::adjust_svg_attributes(HTMLToken& token)
{ {
token.adjust_attribute_name("attributename", "attributeName"); token.adjust_attribute_name("attributename"_fly_string, "attributeName"_fly_string);
token.adjust_attribute_name("attributetype", "attributeType"); token.adjust_attribute_name("attributetype"_fly_string, "attributeType"_fly_string);
token.adjust_attribute_name("basefrequency", "baseFrequency"); token.adjust_attribute_name("basefrequency"_fly_string, "baseFrequency"_fly_string);
token.adjust_attribute_name("baseprofile", "baseProfile"); token.adjust_attribute_name("baseprofile"_fly_string, "baseProfile"_fly_string);
token.adjust_attribute_name("calcmode", "calcMode"); token.adjust_attribute_name("calcmode"_fly_string, "calcMode"_fly_string);
token.adjust_attribute_name("clippathunits", "clipPathUnits"); token.adjust_attribute_name("clippathunits"_fly_string, "clipPathUnits"_fly_string);
token.adjust_attribute_name("diffuseconstant", "diffuseConstant"); token.adjust_attribute_name("diffuseconstant"_fly_string, "diffuseConstant"_fly_string);
token.adjust_attribute_name("edgemode", "edgeMode"); token.adjust_attribute_name("edgemode"_fly_string, "edgeMode"_fly_string);
token.adjust_attribute_name("filterunits", "filterUnits"); token.adjust_attribute_name("filterunits"_fly_string, "filterUnits"_fly_string);
token.adjust_attribute_name("glyphref", "glyphRef"); token.adjust_attribute_name("glyphref"_fly_string, "glyphRef"_fly_string);
token.adjust_attribute_name("gradienttransform", "gradientTransform"); token.adjust_attribute_name("gradienttransform"_fly_string, "gradientTransform"_fly_string);
token.adjust_attribute_name("gradientunits", "gradientUnits"); token.adjust_attribute_name("gradientunits"_fly_string, "gradientUnits"_fly_string);
token.adjust_attribute_name("kernelmatrix", "kernelMatrix"); token.adjust_attribute_name("kernelmatrix"_fly_string, "kernelMatrix"_fly_string);
token.adjust_attribute_name("kernelunitlength", "kernelUnitLength"); token.adjust_attribute_name("kernelunitlength"_fly_string, "kernelUnitLength"_fly_string);
token.adjust_attribute_name("keypoints", "keyPoints"); token.adjust_attribute_name("keypoints"_fly_string, "keyPoints"_fly_string);
token.adjust_attribute_name("keysplines", "keySplines"); token.adjust_attribute_name("keysplines"_fly_string, "keySplines"_fly_string);
token.adjust_attribute_name("keytimes", "keyTimes"); token.adjust_attribute_name("keytimes"_fly_string, "keyTimes"_fly_string);
token.adjust_attribute_name("lengthadjust", "lengthAdjust"); token.adjust_attribute_name("lengthadjust"_fly_string, "lengthAdjust"_fly_string);
token.adjust_attribute_name("limitingconeangle", "limitingConeAngle"); token.adjust_attribute_name("limitingconeangle"_fly_string, "limitingConeAngle"_fly_string);
token.adjust_attribute_name("markerheight", "markerHeight"); token.adjust_attribute_name("markerheight"_fly_string, "markerHeight"_fly_string);
token.adjust_attribute_name("markerunits", "markerUnits"); token.adjust_attribute_name("markerunits"_fly_string, "markerUnits"_fly_string);
token.adjust_attribute_name("markerwidth", "markerWidth"); token.adjust_attribute_name("markerwidth"_fly_string, "markerWidth"_fly_string);
token.adjust_attribute_name("maskcontentunits", "maskContentUnits"); token.adjust_attribute_name("maskcontentunits"_fly_string, "maskContentUnits"_fly_string);
token.adjust_attribute_name("maskunits", "maskUnits"); token.adjust_attribute_name("maskunits"_fly_string, "maskUnits"_fly_string);
token.adjust_attribute_name("numoctaves", "numOctaves"); token.adjust_attribute_name("numoctaves"_fly_string, "numOctaves"_fly_string);
token.adjust_attribute_name("pathlength", "pathLength"); token.adjust_attribute_name("pathlength"_fly_string, "pathLength"_fly_string);
token.adjust_attribute_name("patterncontentunits", "patternContentUnits"); token.adjust_attribute_name("patterncontentunits"_fly_string, "patternContentUnits"_fly_string);
token.adjust_attribute_name("patterntransform", "patternTransform"); token.adjust_attribute_name("patterntransform"_fly_string, "patternTransform"_fly_string);
token.adjust_attribute_name("patternunits", "patternUnits"); token.adjust_attribute_name("patternunits"_fly_string, "patternUnits"_fly_string);
token.adjust_attribute_name("pointsatx", "pointsAtX"); token.adjust_attribute_name("pointsatx"_fly_string, "pointsAtX"_fly_string);
token.adjust_attribute_name("pointsaty", "pointsAtY"); token.adjust_attribute_name("pointsaty"_fly_string, "pointsAtY"_fly_string);
token.adjust_attribute_name("pointsatz", "pointsAtZ"); token.adjust_attribute_name("pointsatz"_fly_string, "pointsAtZ"_fly_string);
token.adjust_attribute_name("preservealpha", "preserveAlpha"); token.adjust_attribute_name("preservealpha"_fly_string, "preserveAlpha"_fly_string);
token.adjust_attribute_name("preserveaspectratio", "preserveAspectRatio"); token.adjust_attribute_name("preserveaspectratio"_fly_string, "preserveAspectRatio"_fly_string);
token.adjust_attribute_name("primitiveunits", "primitiveUnits"); token.adjust_attribute_name("primitiveunits"_fly_string, "primitiveUnits"_fly_string);
token.adjust_attribute_name("refx", "refX"); token.adjust_attribute_name("refx"_fly_string, "refX"_fly_string);
token.adjust_attribute_name("refy", "refY"); token.adjust_attribute_name("refy"_fly_string, "refY"_fly_string);
token.adjust_attribute_name("repeatcount", "repeatCount"); token.adjust_attribute_name("repeatcount"_fly_string, "repeatCount"_fly_string);
token.adjust_attribute_name("repeatdur", "repeatDur"); token.adjust_attribute_name("repeatdur"_fly_string, "repeatDur"_fly_string);
token.adjust_attribute_name("requiredextensions", "requiredExtensions"); token.adjust_attribute_name("requiredextensions"_fly_string, "requiredExtensions"_fly_string);
token.adjust_attribute_name("requiredfeatures", "requiredFeatures"); token.adjust_attribute_name("requiredfeatures"_fly_string, "requiredFeatures"_fly_string);
token.adjust_attribute_name("specularconstant", "specularConstant"); token.adjust_attribute_name("specularconstant"_fly_string, "specularConstant"_fly_string);
token.adjust_attribute_name("specularexponent", "specularExponent"); token.adjust_attribute_name("specularexponent"_fly_string, "specularExponent"_fly_string);
token.adjust_attribute_name("spreadmethod", "spreadMethod"); token.adjust_attribute_name("spreadmethod"_fly_string, "spreadMethod"_fly_string);
token.adjust_attribute_name("startoffset", "startOffset"); token.adjust_attribute_name("startoffset"_fly_string, "startOffset"_fly_string);
token.adjust_attribute_name("stddeviation", "stdDeviation"); token.adjust_attribute_name("stddeviation"_fly_string, "stdDeviation"_fly_string);
token.adjust_attribute_name("stitchtiles", "stitchTiles"); token.adjust_attribute_name("stitchtiles"_fly_string, "stitchTiles"_fly_string);
token.adjust_attribute_name("surfacescale", "surfaceScale"); token.adjust_attribute_name("surfacescale"_fly_string, "surfaceScale"_fly_string);
token.adjust_attribute_name("systemlanguage", "systemLanguage"); token.adjust_attribute_name("systemlanguage"_fly_string, "systemLanguage"_fly_string);
token.adjust_attribute_name("tablevalues", "tableValues"); token.adjust_attribute_name("tablevalues"_fly_string, "tableValues"_fly_string);
token.adjust_attribute_name("targetx", "targetX"); token.adjust_attribute_name("targetx"_fly_string, "targetX"_fly_string);
token.adjust_attribute_name("targety", "targetY"); token.adjust_attribute_name("targety"_fly_string, "targetY"_fly_string);
token.adjust_attribute_name("textlength", "textLength"); token.adjust_attribute_name("textlength"_fly_string, "textLength"_fly_string);
token.adjust_attribute_name("viewbox", "viewBox"); token.adjust_attribute_name("viewbox"_fly_string, "viewBox"_fly_string);
token.adjust_attribute_name("viewtarget", "viewTarget"); token.adjust_attribute_name("viewtarget"_fly_string, "viewTarget"_fly_string);
token.adjust_attribute_name("xchannelselector", "xChannelSelector"); token.adjust_attribute_name("xchannelselector"_fly_string, "xChannelSelector"_fly_string);
token.adjust_attribute_name("ychannelselector", "yChannelSelector"); token.adjust_attribute_name("ychannelselector"_fly_string, "yChannelSelector"_fly_string);
token.adjust_attribute_name("zoomandpan", "zoomAndPan"); token.adjust_attribute_name("zoomandpan"_fly_string, "zoomAndPan"_fly_string);
} }
void HTMLParser::adjust_foreign_attributes(HTMLToken& token) void HTMLParser::adjust_foreign_attributes(HTMLToken& token)
{ {
token.adjust_foreign_attribute("xlink:actuate", "xlink", "actuate", Namespace::XLink); token.adjust_foreign_attribute("xlink:actuate"_fly_string, "xlink", "actuate"_fly_string, Namespace::XLink);
token.adjust_foreign_attribute("xlink:arcrole", "xlink", "arcrole", Namespace::XLink); token.adjust_foreign_attribute("xlink:arcrole"_fly_string, "xlink", "arcrole"_fly_string, Namespace::XLink);
token.adjust_foreign_attribute("xlink:href", "xlink", "href", Namespace::XLink); token.adjust_foreign_attribute("xlink:href"_fly_string, "xlink", "href"_fly_string, Namespace::XLink);
token.adjust_foreign_attribute("xlink:role", "xlink", "role", Namespace::XLink); token.adjust_foreign_attribute("xlink:role"_fly_string, "xlink", "role"_fly_string, Namespace::XLink);
token.adjust_foreign_attribute("xlink:show", "xlink", "show", Namespace::XLink); token.adjust_foreign_attribute("xlink:show"_fly_string, "xlink", "show"_fly_string, Namespace::XLink);
token.adjust_foreign_attribute("xlink:title", "xlink", "title", Namespace::XLink); token.adjust_foreign_attribute("xlink:title"_fly_string, "xlink", "title"_fly_string, Namespace::XLink);
token.adjust_foreign_attribute("xlink:type", "xlink", "type", Namespace::XLink); token.adjust_foreign_attribute("xlink:type"_fly_string, "xlink", "type"_fly_string, Namespace::XLink);
token.adjust_foreign_attribute("xml:lang", "xml", "lang", Namespace::XML); token.adjust_foreign_attribute("xml:lang"_fly_string, "xml", "lang"_fly_string, Namespace::XML);
token.adjust_foreign_attribute("xml:space", "xml", "space", Namespace::XML); token.adjust_foreign_attribute("xml:space"_fly_string, "xml", "space"_fly_string, Namespace::XML);
token.adjust_foreign_attribute("xmlns", "", "xmlns", Namespace::XMLNS); token.adjust_foreign_attribute("xmlns"_fly_string, "", "xmlns"_fly_string, Namespace::XMLNS);
token.adjust_foreign_attribute("xmlns:xlink", "xmlns", "xlink", Namespace::XMLNS); token.adjust_foreign_attribute("xmlns:xlink"_fly_string, "xmlns", "xlink"_fly_string, Namespace::XMLNS);
} }
void HTMLParser::increment_script_nesting_level() void HTMLParser::increment_script_nesting_level()

View file

@ -43,9 +43,9 @@ public:
struct Attribute { struct Attribute {
DeprecatedString prefix; DeprecatedString prefix;
DeprecatedString local_name { "" }; FlyString local_name;
DeprecatedString namespace_; DeprecatedString namespace_;
DeprecatedString value { "" }; String value;
Position name_start_position; Position name_start_position;
Position value_start_position; Position value_start_position;
Position name_end_position; Position name_end_position;
@ -258,12 +258,11 @@ public:
{ {
VERIFY(is_start_tag() || is_end_tag()); VERIFY(is_start_tag() || is_end_tag());
auto deprecated_attribute_name = attribute_name.to_deprecated_fly_string();
auto* ptr = tag_attributes(); auto* ptr = tag_attributes();
if (!ptr) if (!ptr)
return {}; return {};
for (auto& attribute : *ptr) { for (auto const& attribute : *ptr) {
if (deprecated_attribute_name == attribute.local_name) if (attribute_name == attribute.local_name)
return attribute; return attribute;
} }
return {}; return {};
@ -281,7 +280,7 @@ public:
set_tag_name(new_name); set_tag_name(new_name);
} }
void adjust_attribute_name(DeprecatedFlyString const& old_name, DeprecatedFlyString const& new_name) void adjust_attribute_name(FlyString const& old_name, FlyString const& new_name)
{ {
VERIFY(is_start_tag() || is_end_tag()); VERIFY(is_start_tag() || is_end_tag());
for_each_attribute([&](Attribute& attribute) { for_each_attribute([&](Attribute& attribute) {
@ -291,7 +290,7 @@ public:
}); });
} }
void adjust_foreign_attribute(DeprecatedFlyString const& old_name, DeprecatedFlyString const& prefix, DeprecatedFlyString const& local_name, DeprecatedFlyString const& namespace_) void adjust_foreign_attribute(FlyString const& old_name, DeprecatedFlyString const& prefix, FlyString const& local_name, DeprecatedFlyString const& namespace_)
{ {
VERIFY(is_start_tag() || is_end_tag()); VERIFY(is_start_tag() || is_end_tag());
for_each_attribute([&](Attribute& attribute) { for_each_attribute([&](Attribute& attribute) {

View file

@ -1108,31 +1108,31 @@ _StartOfFunction:
ON_WHITESPACE ON_WHITESPACE
{ {
m_current_token.last_attribute().name_end_position = nth_last_position(1); m_current_token.last_attribute().name_end_position = nth_last_position(1);
m_current_token.last_attribute().local_name = consume_current_builder(); m_current_token.last_attribute().local_name = MUST(FlyString::from_deprecated_fly_string(consume_current_builder()));
RECONSUME_IN(AfterAttributeName); RECONSUME_IN(AfterAttributeName);
} }
ON('/') ON('/')
{ {
m_current_token.last_attribute().name_end_position = nth_last_position(1); m_current_token.last_attribute().name_end_position = nth_last_position(1);
m_current_token.last_attribute().local_name = consume_current_builder(); m_current_token.last_attribute().local_name = MUST(FlyString::from_deprecated_fly_string(consume_current_builder()));
RECONSUME_IN(AfterAttributeName); RECONSUME_IN(AfterAttributeName);
} }
ON('>') ON('>')
{ {
m_current_token.last_attribute().name_end_position = nth_last_position(1); m_current_token.last_attribute().name_end_position = nth_last_position(1);
m_current_token.last_attribute().local_name = consume_current_builder(); m_current_token.last_attribute().local_name = MUST(FlyString::from_deprecated_fly_string(consume_current_builder()));
RECONSUME_IN(AfterAttributeName); RECONSUME_IN(AfterAttributeName);
} }
ON_EOF ON_EOF
{ {
m_current_token.last_attribute().name_end_position = nth_last_position(1); m_current_token.last_attribute().name_end_position = nth_last_position(1);
m_current_token.last_attribute().local_name = consume_current_builder(); m_current_token.last_attribute().local_name = MUST(FlyString::from_deprecated_fly_string(consume_current_builder()));
RECONSUME_IN(AfterAttributeName); RECONSUME_IN(AfterAttributeName);
} }
ON('=') ON('=')
{ {
m_current_token.last_attribute().name_end_position = nth_last_position(1); m_current_token.last_attribute().name_end_position = nth_last_position(1);
m_current_token.last_attribute().local_name = consume_current_builder(); m_current_token.last_attribute().local_name = MUST(FlyString::from_deprecated_fly_string(consume_current_builder()));
SWITCH_TO(BeforeAttributeValue); SWITCH_TO(BeforeAttributeValue);
} }
ON_ASCII_UPPER_ALPHA ON_ASCII_UPPER_ALPHA
@ -1238,7 +1238,7 @@ _StartOfFunction:
{ {
ON('"') ON('"')
{ {
m_current_token.last_attribute().value = consume_current_builder(); m_current_token.last_attribute().value = MUST(String::from_deprecated_string(consume_current_builder()));
SWITCH_TO(AfterAttributeValueQuoted); SWITCH_TO(AfterAttributeValueQuoted);
} }
ON('&') ON('&')
@ -1270,7 +1270,7 @@ _StartOfFunction:
{ {
ON('\'') ON('\'')
{ {
m_current_token.last_attribute().value = consume_current_builder(); m_current_token.last_attribute().value = MUST(String::from_deprecated_string(consume_current_builder()));
SWITCH_TO(AfterAttributeValueQuoted); SWITCH_TO(AfterAttributeValueQuoted);
} }
ON('&') ON('&')
@ -1302,7 +1302,7 @@ _StartOfFunction:
{ {
ON_WHITESPACE ON_WHITESPACE
{ {
m_current_token.last_attribute().value = consume_current_builder(); m_current_token.last_attribute().value = MUST(String::from_deprecated_string(consume_current_builder()));
m_current_token.last_attribute().value_end_position = nth_last_position(1); m_current_token.last_attribute().value_end_position = nth_last_position(1);
SWITCH_TO(BeforeAttributeName); SWITCH_TO(BeforeAttributeName);
} }
@ -1313,7 +1313,7 @@ _StartOfFunction:
} }
ON('>') ON('>')
{ {
m_current_token.last_attribute().value = consume_current_builder(); m_current_token.last_attribute().value = MUST(String::from_deprecated_string(consume_current_builder()));
m_current_token.last_attribute().value_end_position = nth_last_position(1); m_current_token.last_attribute().value_end_position = nth_last_position(1);
SWITCH_TO_AND_EMIT_CURRENT_TOKEN(Data); SWITCH_TO_AND_EMIT_CURRENT_TOKEN(Data);
} }