MCPcopy Create free account
hub / github.com/Audio4Linux/JDSP4Linux / removeExtraSymbols

Method removeExtraSymbols

3rdparty/qtcsv/sources/reader.cpp:413–458  ·  view source on GitHub ↗

Remove extra symbols (spaces, text delimeters...) @input: - elements - list of row elements - textDelimiter - string that is used as text delimiter

Source from the content-addressed store, hash-verified

411// - elements - list of row elements
412// - textDelimiter - string that is used as text delimiter
413void ReaderPrivate::removeExtraSymbols(
414 QList<QString>& elements, const QString& textDelimiter)
415{
416 if (elements.isEmpty()) { return; }
417
418 const auto doubleTextDelim = textDelimiter + textDelimiter;
419 for (auto i = 0; i < elements.size(); ++i) {
420 const auto str = QStringView{elements.at(i)};
421 if (str.isEmpty()) { continue; }
422
423 qsizetype startPos = 0, endPos = str.size() - 1;
424
425 // Find first non-space char
426 for (; startPos < str.size() &&
427 str.at(startPos).category() == QChar::Separator_Space;
428 ++startPos);
429
430 // Find last non-space char
431 for (;
432 endPos >= 0 && str.at(endPos).category() == QChar::Separator_Space;
433 --endPos);
434
435 if (!textDelimiter.isEmpty()) {
436 // Skip text delimiter symbol if element starts with it
437 const auto strStart = str.mid(startPos, textDelimiter.size());
438 if (strStart == textDelimiter) {
439 startPos += textDelimiter.size();
440 }
441
442 // Skip text delimiter symbol if element ends with it
443 const auto strEnd = str.mid(
444 endPos - textDelimiter.size() + 1, textDelimiter.size());
445 if (strEnd == textDelimiter) {
446 endPos -= textDelimiter.size();
447 }
448 }
449
450 if ((0 < startPos || endPos < str.size() - 1) &&
451 startPos <= endPos) {
452 elements[i] = elements[i].mid(startPos, endPos - startPos + 1);
453 }
454
455 // Also replace double text delimiter with one text delimiter symbol
456 elements[i].replace(doubleTextDelim, textDelimiter);
457 }
458}
459
460// ReadToListProcessor - processor that saves rows of elements to list.
461class ReadToListProcessor : public Reader::AbstractProcessor {

Callers

nothing calls this directly

Calls 3

isEmptyMethod · 0.45
sizeMethod · 0.45
atMethod · 0.45

Tested by

no test coverage detected