From 2c1e15bd3b3200f0277b92af925a59ad4e9b0113 Mon Sep 17 00:00:00 2001 From: Kenneth Myhra Date: Sat, 25 Feb 2023 23:23:26 +0100 Subject: [PATCH] LibWeb: Add to_ascii_lower_case() from the Infra spec https://infra.spec.whatwg.org/#ascii-lowercase --- Userland/Libraries/LibWeb/Infra/Strings.cpp | 14 ++++++++++++++ Userland/Libraries/LibWeb/Infra/Strings.h | 1 + 2 files changed, 15 insertions(+) diff --git a/Userland/Libraries/LibWeb/Infra/Strings.cpp b/Userland/Libraries/LibWeb/Infra/Strings.cpp index 3f381c84264..130ffaba765 100644 --- a/Userland/Libraries/LibWeb/Infra/Strings.cpp +++ b/Userland/Libraries/LibWeb/Infra/Strings.cpp @@ -106,4 +106,18 @@ ErrorOr convert_to_scalar_value_string(StringView string) return scalar_value_builder.to_string(); } +// https://infra.spec.whatwg.org/#ascii-lowercase +ErrorOr to_ascii_lower_case(StringView string) +{ + // To ASCII lowercase a string, replace all ASCII upper alphas in the string with their + // corresponding code point in ASCII lower alpha. + StringBuilder string_builder; + auto utf8_view = Utf8View { string }; + for (u32 code_point : utf8_view) { + code_point = to_ascii_lowercase(code_point); + TRY(string_builder.try_append(code_point)); + } + return string_builder.to_string(); +} + } diff --git a/Userland/Libraries/LibWeb/Infra/Strings.h b/Userland/Libraries/LibWeb/Infra/Strings.h index f44f6d98655..78d80307598 100644 --- a/Userland/Libraries/LibWeb/Infra/Strings.h +++ b/Userland/Libraries/LibWeb/Infra/Strings.h @@ -17,5 +17,6 @@ bool is_ascii_case_insensitive_match(StringView a, StringView b); DeprecatedString strip_and_collapse_whitespace(StringView string); bool is_code_unit_prefix(StringView potential_prefix, StringView input); ErrorOr convert_to_scalar_value_string(StringView string); +ErrorOr to_ascii_lower_case(StringView string); }