1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-06-01 08:28:11 +00:00

AK+Format: Make it possible to format characters as integers.

This commit is contained in:
asynts 2020-10-07 14:25:19 +02:00 committed by Andreas Kling
parent 2217d6b560
commit d546d31a53
2 changed files with 13 additions and 6 deletions

View file

@ -549,6 +549,17 @@ void Formatter<T, typename EnableIf<IsIntegral<T>::value>::Type>::format(TypeEra
builder.put_i64(value, base, m_alternative_form, upper_case, m_zero_pad, m_align, width, m_fill, m_sign_mode);
}
void Formatter<char>::format(TypeErasedFormatParams& params, FormatBuilder& builder, char 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) {
// Trick: signed char != char. (Sometimes weird features are actually helpful.)
Formatter<signed char> formatter { *this };
return formatter.format(params, builder, static_cast<signed char>(value));
} else {
Formatter<StringView> formatter { *this };
return formatter.format(params, builder, { &value, 1 });
}
}
void Formatter<bool>::format(TypeErasedFormatParams& params, 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) {