1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 23:17:45 +00:00

LibWeb: Return FlyString const& from CSS::Parser::Token

This allows us to not need to convert back to a FlyString when we need
one.
This commit is contained in:
Shannon Booth 2023-11-26 10:40:08 +13:00 committed by Andreas Kling
parent b9902fef36
commit 6813dcaff8
3 changed files with 21 additions and 21 deletions

View file

@ -1152,7 +1152,7 @@ Optional<AK::URL> Parser::parse_url_function(ComponentValue const& component_val
{
// FIXME: Handle list of media queries. https://www.w3.org/TR/css-cascade-3/#conditional-import
auto convert_string_to_url = [&](StringView& url_string) -> Optional<AK::URL> {
auto convert_string_to_url = [&](StringView url_string) -> Optional<AK::URL> {
auto url = m_context.complete_url(url_string);
if (url.is_valid())
return url;
@ -1367,9 +1367,9 @@ CSSRule* Parser::convert_to_rule(NonnullRefPtr<Rule> rule)
FlyString namespace_uri;
if (token.is(Token::Type::String)) {
namespace_uri = MUST(FlyString::from_utf8(token.token().string()));
namespace_uri = token.token().string();
} else if (auto url = parse_url_function(token); url.has_value()) {
namespace_uri = MUST(FlyString::from_deprecated_fly_string(url.value().to_deprecated_string()));
namespace_uri = MUST(url.value().to_string());
} else {
dbgln_if(CSS_PARSER_DEBUG, "CSSParser: @namespace rule invalid; discarding.");
return {};
@ -4144,7 +4144,7 @@ CSSRule* Parser::parse_font_face_rule(TokenStream<ComponentValue>& tokens)
if (declaration.name().equals_ignoring_ascii_case("font-family"sv)) {
// FIXME: This is very similar to, but different from, the logic in parse_font_family_value().
// Ideally they could share code.
Vector<DeprecatedString> font_family_parts;
Vector<FlyString> font_family_parts;
bool had_syntax_error = false;
for (size_t i = 0; i < declaration.values().size(); ++i) {
auto const& part = declaration.values()[i];
@ -4171,7 +4171,7 @@ CSSRule* Parser::parse_font_face_rule(TokenStream<ComponentValue>& tokens)
had_syntax_error = true;
break;
}
font_family_parts.append(part.token().ident().bytes_as_string_view());
font_family_parts.append(part.token().ident());
continue;
}

View file

@ -705,10 +705,10 @@ Optional<Selector::SimpleSelector::ANPlusBPattern> Parser::parse_a_n_plus_b_patt
if (!value.token().number().is_integer())
return false;
auto dimension_unit = value.token().dimension_unit();
if (!dimension_unit.starts_with("n-"sv, CaseSensitivity::CaseInsensitive))
if (!dimension_unit.starts_with_bytes("n-"sv, CaseSensitivity::CaseInsensitive))
return false;
for (size_t i = 2; i < dimension_unit.length(); ++i) {
if (!is_ascii_digit(dimension_unit[i]))
for (size_t i = 2; i < dimension_unit.bytes_as_string_view().length(); ++i) {
if (!is_ascii_digit(dimension_unit.bytes_as_string_view()[i]))
return false;
}
return true;
@ -822,7 +822,7 @@ Optional<Selector::SimpleSelector::ANPlusBPattern> Parser::parse_a_n_plus_b_patt
if (is_ndashdigit_dimension(first_value)) {
auto const& dimension = first_value.token();
int a = dimension.dimension_value_int();
auto maybe_b = dimension.dimension_unit().substring_view(1).to_int();
auto maybe_b = dimension.dimension_unit().bytes_as_string_view().substring_view(1).to_int();
if (maybe_b.has_value()) {
transaction.commit();
return Selector::SimpleSelector::ANPlusBPattern { a, maybe_b.value() };

View file

@ -65,10 +65,10 @@ public:
return m_value;
}
StringView function() const
FlyString const& function() const
{
VERIFY(m_type == Type::Function);
return m_value.bytes_as_string_view();
return m_value;
}
u32 delim() const
@ -77,22 +77,22 @@ public:
return *Utf8View(m_value.bytes_as_string_view()).begin();
}
StringView string() const
FlyString const& string() const
{
VERIFY(m_type == Type::String);
return m_value.bytes_as_string_view();
return m_value;
}
StringView url() const
FlyString const& url() const
{
VERIFY(m_type == Type::Url);
return m_value.bytes_as_string_view();
return m_value;
}
StringView at_keyword() const
FlyString const& at_keyword() const
{
VERIFY(m_type == Type::AtKeyword);
return m_value.bytes_as_string_view();
return m_value;
}
HashType hash_type() const
@ -100,10 +100,10 @@ public:
VERIFY(m_type == Type::Hash);
return m_hash_type;
}
StringView hash_value() const
FlyString const& hash_value() const
{
VERIFY(m_type == Type::Hash);
return m_value.bytes_as_string_view();
return m_value;
}
Number const& number() const
@ -122,10 +122,10 @@ public:
return m_number_value.integer_value();
}
StringView dimension_unit() const
FlyString const& dimension_unit() const
{
VERIFY(m_type == Type::Dimension);
return m_value.bytes_as_string_view();
return m_value;
}
double dimension_value() const
{