diff --git a/AK/FlyString.cpp b/AK/FlyString.cpp index e320b95c2d4c88..54f25cc2d9adce 100644 --- a/AK/FlyString.cpp +++ b/AK/FlyString.cpp @@ -98,6 +98,11 @@ bool FlyString::equals_ignoring_case(const StringView& other) const return StringUtils::equals_ignoring_case(view(), other); } +bool FlyString::ends_with(const StringView& str, CaseSensitivity case_sensitivity) const +{ + return StringUtils::ends_with(view(), str, case_sensitivity); +} + FlyString FlyString::to_lowercase() const { return String(*m_impl).to_lowercase(); diff --git a/AK/FlyString.h b/AK/FlyString.h index d3423522c514e7..ea6411c26b45e5 100644 --- a/AK/FlyString.h +++ b/AK/FlyString.h @@ -85,6 +85,7 @@ class FlyString { int to_int(bool& ok) const; bool equals_ignoring_case(const StringView&) const; + bool ends_with(const StringView&, CaseSensitivity = CaseSensitivity::CaseSensitive) const; static void did_destroy_impl(Badge, StringImpl&); diff --git a/AK/StringView.cpp b/AK/StringView.cpp index 11ff3d6600a16d..a895842683441e 100644 --- a/AK/StringView.cpp +++ b/AK/StringView.cpp @@ -141,15 +141,9 @@ bool StringView::ends_with(char ch) const return ch == characters_without_null_termination()[length() - 1]; } -bool StringView::ends_with(const StringView& str) const +bool StringView::ends_with(const StringView& str, CaseSensitivity case_sensitivity) const { - if (str.is_empty()) - return true; - if (is_empty()) - return false; - if (str.length() > length()) - return false; - return !memcmp(characters_without_null_termination() + length() - str.length(), str.characters_without_null_termination(), str.length()); + return StringUtils::ends_with(*this, str, case_sensitivity); } bool StringView::matches(const StringView& mask, CaseSensitivity case_sensitivity) const diff --git a/AK/StringView.h b/AK/StringView.h index 6a4b41963382e6..9ba07735b27aed 100644 --- a/AK/StringView.h +++ b/AK/StringView.h @@ -73,7 +73,7 @@ class StringView { unsigned hash() const; bool starts_with(const StringView&) const; - bool ends_with(const StringView&) const; + bool ends_with(const StringView&, CaseSensitivity = CaseSensitivity::CaseSensitive) const; bool starts_with(char) const; bool ends_with(char) const; bool matches(const StringView& mask, CaseSensitivity = CaseSensitivity::CaseInsensitive) const;