diff --git a/AK/Format.cpp b/AK/Format.cpp index 90c5b37467a..5c09198f7b4 100644 --- a/AK/Format.cpp +++ b/AK/Format.cpp @@ -990,6 +990,21 @@ ErrorOr Formatter::format(FormatBuilder& builder, char value) return formatter.format(builder, { &value, 1 }); } } + +ErrorOr Formatter::format(FormatBuilder& builder, char16_t value) +{ + if (m_mode == Mode::Binary || m_mode == Mode::BinaryUppercase || m_mode == Mode::Decimal || m_mode == Mode::Octal || m_mode == Mode::Hexadecimal || m_mode == Mode::HexadecimalUppercase) { + Formatter formatter { *this }; + return formatter.format(builder, value); + } else { + StringBuilder codepoint; + codepoint.append_code_point(value); + + Formatter formatter { *this }; + return formatter.format(builder, codepoint.string_view()); + } +} + ErrorOr Formatter::format(FormatBuilder& builder, char32_t value) { if (m_mode == Mode::Binary || m_mode == Mode::BinaryUppercase || m_mode == Mode::Decimal || m_mode == Mode::Octal || m_mode == Mode::Hexadecimal || m_mode == Mode::HexadecimalUppercase) { @@ -1003,6 +1018,7 @@ ErrorOr Formatter::format(FormatBuilder& builder, char32_t value return formatter.format(builder, codepoint.string_view()); } } + ErrorOr Formatter::format(FormatBuilder& builder, bool value) { if (m_mode == Mode::Binary || m_mode == Mode::BinaryUppercase || m_mode == Mode::Decimal || m_mode == Mode::Octal || m_mode == Mode::Hexadecimal || m_mode == Mode::HexadecimalUppercase) { @@ -1015,6 +1031,7 @@ ErrorOr Formatter::format(FormatBuilder& builder, bool value) return formatter.format(builder, value ? "true"sv : "false"sv); } } + ErrorOr Formatter::format(FormatBuilder& builder, long double value) { u8 base; diff --git a/AK/Format.h b/AK/Format.h index 7ce4496609b..0cf9ebb0a7e 100644 --- a/AK/Format.h +++ b/AK/Format.h @@ -547,8 +547,12 @@ struct Formatter : StandardFormatter { ErrorOr format(FormatBuilder&, char); }; template<> +struct Formatter : StandardFormatter { + ErrorOr format(FormatBuilder&, char16_t); +}; +template<> struct Formatter : StandardFormatter { - ErrorOr format(FormatBuilder& builder, char32_t); + ErrorOr format(FormatBuilder&, char32_t); }; template<> struct Formatter : StandardFormatter {