From 4235c59397b3a7f964f0b346a7b399141eef25af Mon Sep 17 00:00:00 2001 From: Timothy Flynn Date: Sun, 15 Jan 2023 09:37:32 -0500 Subject: [PATCH] LibJS: Add a convenience StringView accessor to PrimitiveString --- .../Libraries/LibJS/Runtime/PrimitiveString.cpp | 13 ++++++++----- Userland/Libraries/LibJS/Runtime/PrimitiveString.h | 1 + 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Userland/Libraries/LibJS/Runtime/PrimitiveString.cpp b/Userland/Libraries/LibJS/Runtime/PrimitiveString.cpp index fb2a99b56c..2e87caf002 100644 --- a/Userland/Libraries/LibJS/Runtime/PrimitiveString.cpp +++ b/Userland/Libraries/LibJS/Runtime/PrimitiveString.cpp @@ -90,6 +90,12 @@ ThrowCompletionOr PrimitiveString::utf8_string() const return *m_utf8_string; } +ThrowCompletionOr PrimitiveString::utf8_string_view() const +{ + (void)TRY(utf8_string()); + return m_utf8_string->bytes_as_string_view(); +} + ThrowCompletionOr PrimitiveString::deprecated_string() const { TRY(resolve_rope_if_needed()); @@ -281,11 +287,8 @@ ThrowCompletionOr PrimitiveString::resolve_rope_if_needed() const } // Get the UTF-8 representations for both strings. - auto current_string_as_utf8_string = TRY(current->utf8_string()); - auto current_string_as_utf8 = current_string_as_utf8_string.bytes_as_string_view(); - - auto previous_string_as_utf8_string = TRY(previous->utf8_string()); - auto previous_string_as_utf8 = previous_string_as_utf8_string.bytes_as_string_view(); + auto current_string_as_utf8 = TRY(current->utf8_string_view()); + auto previous_string_as_utf8 = TRY(previous->utf8_string_view()); // NOTE: Now we need to look at the end of the previous string and the start // of the current string, to see if they should be combined into a surrogate. diff --git a/Userland/Libraries/LibJS/Runtime/PrimitiveString.h b/Userland/Libraries/LibJS/Runtime/PrimitiveString.h index 96e5accb99..91c778ac60 100644 --- a/Userland/Libraries/LibJS/Runtime/PrimitiveString.h +++ b/Userland/Libraries/LibJS/Runtime/PrimitiveString.h @@ -37,6 +37,7 @@ public: u32 hash() const; ThrowCompletionOr utf8_string() const; + ThrowCompletionOr utf8_string_view() const; bool has_utf8_string() const { return m_utf8_string.has_value(); } ThrowCompletionOr deprecated_string() const;