23 #include "patternlist.h"
26 #include <QDataStream>
30 bool PatternList::isExactMatchAny(
const QString &candidate)
const
32 for (
const auto &matcher : *
this)
34 auto match = matcher.match(candidate, 0, QRegularExpression::NormalMatch, QRegularExpression::AnchoredMatchOption);
35 if (match.hasMatch() && match.capturedLength(0) == candidate.length())
43 PatternList PatternList::deserializeQVariant(
const QVariant &var)
46 for (
const QVariant &element : var.toList())
48 if (element.canConvert<
Pattern>())
50 result << element.value<
Pattern>();
52 else if (element.canConvert<QRegularExpression>())
55 result << element.toRegularExpression();
66 QDataStream stream(&rawData, QIODevice::WriteOnly);
68 stream.setVersion(QDataStream::Qt_4_0);
72 QDataStream stream(&rawData, QIODevice::ReadOnly);
73 stream.setVersion(QDataStream::Qt_4_0);
75 constexpr quint32 REGEXP_TYPE = 27;
78 if (stream.status() != QDataStream::Ok)
80 qDebug() <<
"Attempt to migrate QRegExp could not read variant type";
83 if (type != REGEXP_TYPE)
85 qDebug() <<
"Attempt to migrate QRegExp encounter unexpected type:" << type;
89 constexpr quint8 REGEXP_SYNTAX_WILDCARD = 1;
92 quint8 caseSensitivity = 0;
95 stream >> regex >> caseSensitivity >> syntax >> minimal;
96 if (stream.status() != QDataStream::Ok)
98 qDebug() <<
"Attempt to migrate QRegExp could not read contents";
102 result <<
Pattern(regex, caseSensitivity == Qt::CaseSensitive ? QRegularExpression::NoPatternOption : QRegularExpression::CaseInsensitiveOption, syntax == REGEXP_SYNTAX_WILDCARD ? Pattern::Wildcard : Pattern::RegExp);
108 QVariant PatternList::serializeQVariant()
const
111 for (
const auto &pattern : *
this)
113 var << QVariant::fromValue(pattern);