mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-10 13:00:29 +03:00
3c2565da94
This introduces the UnicodeUtils file, which contains helper functions related to Unicode. This is in contrast to StringUtils, whose functions are not directly related to Unicode and are, in theory, encoding-agnostic.
38 lines
1.2 KiB
C++
38 lines
1.2 KiB
C++
/*
|
|
* Copyright (c) 2021, Max Wipfli <mail@maxwipfli.ch>
|
|
*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*/
|
|
|
|
#include <AK/Array.h>
|
|
#include <AK/Optional.h>
|
|
#include <AK/StringView.h>
|
|
#include <AK/UnicodeUtils.h>
|
|
|
|
namespace AK::UnicodeUtils {
|
|
|
|
Optional<StringView> get_unicode_control_code_point_alias(u32 code_point)
|
|
{
|
|
static constexpr Array<StringView, 32> ascii_controls_lookup_table = {
|
|
"NUL", "SOH", "STX", "ETX", "EOT", "ENQ", "ACK", "BEL",
|
|
"BS", "HT", "LF", "VT", "FF", "CR", "SO", "SI",
|
|
"DLE", "DC1", "DC2", "DC3", "DC4", "NAK", "SYN", "ETB",
|
|
"CAN", "EM", "SUB", "ESC", "FS", "GS", "RS", "US"
|
|
};
|
|
|
|
static constexpr Array<StringView, 32> c1_controls_lookup_table = {
|
|
"XXX", "XXX", "BPH", "NBH", "IND", "NEL", "SSA", "ESA",
|
|
"HTS", "HTJ", "VTS", "PLD", "PLU", "RI", "SS2", "SS3",
|
|
"DCS", "PU1", "PU2", "STS", "CCH", "MW", "SPA", "EPA",
|
|
"SOS", "XXX", "SCI", "CSI", "ST", "OSC", "PM", "APC"
|
|
};
|
|
|
|
if (code_point < 0x20)
|
|
return ascii_controls_lookup_table[code_point];
|
|
if (code_point >= 0x80 && code_point < 0xa0)
|
|
return c1_controls_lookup_table[code_point - 0x80];
|
|
return {};
|
|
}
|
|
|
|
}
|