String.cpp 977 B

123456789101112131415161718192021222324252627282930313233343536
  1. /*
  2. * Copyright (c) 2023, Tim Flynn <trflynn89@serenityos.org>
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #include <AK/String.h>
  7. #include <AK/StringBuilder.h>
  8. #include <LibUnicode/UnicodeUtils.h>
  9. // This file contains definitions of AK::String methods which require UCD data.
  10. namespace AK {
  11. ErrorOr<String> String::to_lowercase(Optional<StringView> const& locale) const
  12. {
  13. StringBuilder builder;
  14. TRY(Unicode::Detail::build_lowercase_string(code_points(), builder, locale));
  15. return builder.to_string();
  16. }
  17. ErrorOr<String> String::to_uppercase(Optional<StringView> const& locale) const
  18. {
  19. StringBuilder builder;
  20. TRY(Unicode::Detail::build_uppercase_string(code_points(), builder, locale));
  21. return builder.to_string();
  22. }
  23. ErrorOr<String> String::to_titlecase(Optional<StringView> const& locale) const
  24. {
  25. StringBuilder builder;
  26. TRY(Unicode::Detail::build_titlecase_string(code_points(), builder, locale));
  27. return builder.to_string();
  28. }
  29. }