mirror of https://github.com/qt/qtbase.git
util/unicode: remove replace() calls from remaining read*() functions
Some users of the split()ed value handled intervening whitespace
already:
- the first field is piped through parseHexRange(), which does
- the second field was missing the trimmed() call before lookup.
Added. All looked-up values are space-free (cf. resp. init*()
functions), so that's enough, too.
As a consequence, we can accept the lines by reference to const
QByteArray now and, now that all lambdas have the same signature,
change readUnicodeFile() from a template to a regular function
taking qxp::function_ref callbacks.
Amends a794c5e287
(readEmojiData())
and the start of the public history (rest).
Pick-to: 6.10 6.9 6.8 6.5
Change-Id: I442855a183552aa90d24810023793e6464b18162
Reviewed-by: Edward Welbourne <edward.welbourne@qt.io>
This commit is contained in:
parent
b98aa3983c
commit
d03ad0e3da
|
@ -16,6 +16,8 @@
|
||||||
#include <private/qunicodetables_p.h>
|
#include <private/qunicodetables_p.h>
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#include <QtCore/qxpfunctional.h>
|
||||||
|
|
||||||
#if QT_VERSION < QT_VERSION_CHECK(6, 9, 0)
|
#if QT_VERSION < QT_VERSION_CHECK(6, 9, 0)
|
||||||
// QSpan, QIODevice::readLineInto()
|
// QSpan, QIODevice::readLineInto()
|
||||||
# error This tool needs Qt >= 6.9, even if you are building tables for Qt 6.5 or 6.8.
|
# error This tool needs Qt >= 6.9, even if you are building tables for Qt 6.5 or 6.8.
|
||||||
|
@ -1316,8 +1318,7 @@ static int maxUpperCaseDiff = 0;
|
||||||
static int maxTitleCaseDiff = 0;
|
static int maxTitleCaseDiff = 0;
|
||||||
static int maxSeparatorCodepoint = 0;
|
static int maxSeparatorCodepoint = 0;
|
||||||
|
|
||||||
template <typename LineConsumer>
|
void readUnicodeFile(const char *fileName, qxp::function_ref<void(const QByteArray &, int)> yield)
|
||||||
void readUnicodeFile(const char *fileName, LineConsumer yield)
|
|
||||||
{
|
{
|
||||||
qDebug("Reading %s", fileName);
|
qDebug("Reading %s", fileName);
|
||||||
|
|
||||||
|
@ -1782,15 +1783,13 @@ static QByteArray createNormalizationCorrections()
|
||||||
static void readLineBreak()
|
static void readLineBreak()
|
||||||
{
|
{
|
||||||
readUnicodeFile("LineBreak.txt",
|
readUnicodeFile("LineBreak.txt",
|
||||||
[] (QByteArray &line, int lineNo) {
|
[] (const QByteArray &line, int lineNo) {
|
||||||
line.replace(" ", "");
|
|
||||||
|
|
||||||
QList<QByteArray> l = line.split(';');
|
QList<QByteArray> l = line.split(';');
|
||||||
Q_ASSERT(l.size() == 2);
|
Q_ASSERT(l.size() == 2);
|
||||||
|
|
||||||
const auto [from, to] = parseHexRange(l[0], lineNo);
|
const auto [from, to] = parseHexRange(l[0], lineNo);
|
||||||
|
|
||||||
LineBreakClass lb = line_break_map.value(l[1], LineBreak_Unassigned);
|
LineBreakClass lb = line_break_map.value(l[1].trimmed(), LineBreak_Unassigned);
|
||||||
if (lb == LineBreak_Unassigned)
|
if (lb == LineBreak_Unassigned)
|
||||||
qFatal("unassigned line break class: %s", l[1].constData());
|
qFatal("unassigned line break class: %s", l[1].constData());
|
||||||
|
|
||||||
|
@ -1893,16 +1892,13 @@ static void readCaseFolding()
|
||||||
static void readGraphemeBreak()
|
static void readGraphemeBreak()
|
||||||
{
|
{
|
||||||
readUnicodeFile("GraphemeBreakProperty.txt",
|
readUnicodeFile("GraphemeBreakProperty.txt",
|
||||||
[] (QByteArray &line, int lineNo) {
|
[] (const QByteArray &line, int lineNo) {
|
||||||
|
|
||||||
line.replace(" ", "");
|
|
||||||
|
|
||||||
QList<QByteArray> l = line.split(';');
|
QList<QByteArray> l = line.split(';');
|
||||||
Q_ASSERT(l.size() == 2);
|
Q_ASSERT(l.size() == 2);
|
||||||
|
|
||||||
const auto [from, to] = parseHexRange(l[0], lineNo);
|
const auto [from, to] = parseHexRange(l[0], lineNo);
|
||||||
|
|
||||||
GraphemeBreakClass brk = grapheme_break_map.value(l[1], GraphemeBreak_Unassigned);
|
GraphemeBreakClass brk = grapheme_break_map.value(l[1].trimmed(), GraphemeBreak_Unassigned);
|
||||||
if (brk == GraphemeBreak_Unassigned)
|
if (brk == GraphemeBreak_Unassigned)
|
||||||
qFatal("unassigned grapheme break class: %s", l[1].constData());
|
qFatal("unassigned grapheme break class: %s", l[1].constData());
|
||||||
|
|
||||||
|
@ -1916,13 +1912,11 @@ static void readGraphemeBreak()
|
||||||
static void readEmojiData()
|
static void readEmojiData()
|
||||||
{
|
{
|
||||||
readUnicodeFile("emoji-data.txt",
|
readUnicodeFile("emoji-data.txt",
|
||||||
[] (QByteArray &line, int lineNo) {
|
[] (const QByteArray &line, int lineNo) {
|
||||||
line.replace(" ", "");
|
|
||||||
|
|
||||||
QList<QByteArray> l = line.split(';');
|
QList<QByteArray> l = line.split(';');
|
||||||
Q_ASSERT(l.size() == 2);
|
Q_ASSERT(l.size() == 2);
|
||||||
|
|
||||||
EmojiFlags emojiFlags = emojiFlagsMap.value(l[1], EmojiFlags::NoEmoji);
|
EmojiFlags emojiFlags = emojiFlagsMap.value(l[1].trimmed(), EmojiFlags::NoEmoji);
|
||||||
if (emojiFlags == EmojiFlags::NoEmoji)
|
if (emojiFlags == EmojiFlags::NoEmoji)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
@ -1945,15 +1939,13 @@ static void readEmojiData()
|
||||||
static void readWordBreak()
|
static void readWordBreak()
|
||||||
{
|
{
|
||||||
readUnicodeFile("WordBreakProperty.txt",
|
readUnicodeFile("WordBreakProperty.txt",
|
||||||
[] (QByteArray &line, int lineNo) {
|
[] (const QByteArray &line, int lineNo) {
|
||||||
line.replace(" ", "");
|
|
||||||
|
|
||||||
QList<QByteArray> l = line.split(';');
|
QList<QByteArray> l = line.split(';');
|
||||||
Q_ASSERT(l.size() == 2);
|
Q_ASSERT(l.size() == 2);
|
||||||
|
|
||||||
const auto [from, to] = parseHexRange(l[0], lineNo);
|
const auto [from, to] = parseHexRange(l[0], lineNo);
|
||||||
|
|
||||||
WordBreakClass brk = word_break_map.value(l[1], WordBreak_Unassigned);
|
WordBreakClass brk = word_break_map.value(l[1].trimmed(), WordBreak_Unassigned);
|
||||||
if (brk == WordBreak_Unassigned)
|
if (brk == WordBreak_Unassigned)
|
||||||
qFatal("unassigned word break class: %s", l[1].constData());
|
qFatal("unassigned word break class: %s", l[1].constData());
|
||||||
|
|
||||||
|
@ -1976,15 +1968,13 @@ static void readWordBreak()
|
||||||
static void readSentenceBreak()
|
static void readSentenceBreak()
|
||||||
{
|
{
|
||||||
readUnicodeFile("SentenceBreakProperty.txt",
|
readUnicodeFile("SentenceBreakProperty.txt",
|
||||||
[] (QByteArray &line, int lineNo) {
|
[] (const QByteArray &line, int lineNo) {
|
||||||
line.replace(" ", "");
|
|
||||||
|
|
||||||
QList<QByteArray> l = line.split(';');
|
QList<QByteArray> l = line.split(';');
|
||||||
Q_ASSERT(l.size() == 2);
|
Q_ASSERT(l.size() == 2);
|
||||||
|
|
||||||
const auto [from, to] = parseHexRange(l[0], lineNo);
|
const auto [from, to] = parseHexRange(l[0], lineNo);
|
||||||
|
|
||||||
SentenceBreakClass brk = sentence_break_map.value(l[1], SentenceBreak_Unassigned);
|
SentenceBreakClass brk = sentence_break_map.value(l[1].trimmed(), SentenceBreak_Unassigned);
|
||||||
if (brk == SentenceBreak_Unassigned)
|
if (brk == SentenceBreak_Unassigned)
|
||||||
qFatal("unassigned sentence break class: %s", l[1].constData());
|
qFatal("unassigned sentence break class: %s", l[1].constData());
|
||||||
|
|
||||||
|
@ -2188,16 +2178,11 @@ static void readBlocks()
|
||||||
static void readScripts()
|
static void readScripts()
|
||||||
{
|
{
|
||||||
readUnicodeFile("Scripts.txt",
|
readUnicodeFile("Scripts.txt",
|
||||||
[] (QByteArray &line, int lineNo) {
|
[] (const QByteArray &line, int lineNo) {
|
||||||
line.replace(" ", "");
|
|
||||||
|
|
||||||
if (line.isEmpty())
|
|
||||||
return;
|
|
||||||
|
|
||||||
int semicolon = line.indexOf(';');
|
int semicolon = line.indexOf(';');
|
||||||
Q_ASSERT(semicolon >= 0);
|
Q_ASSERT(semicolon >= 0);
|
||||||
QByteArray codePoints = line.left(semicolon);
|
QByteArray codePoints = line.left(semicolon);
|
||||||
QByteArray scriptName = line.mid(semicolon + 1);
|
QByteArray scriptName = line.mid(semicolon + 1).trimmed();
|
||||||
|
|
||||||
const auto [first, last] = parseHexRange(codePoints, lineNo);
|
const auto [first, last] = parseHexRange(codePoints, lineNo);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue