Fix up message parsing regexp to handle 4 character directional CQs

This defect was causing new grids not  to be highlighted when 1, 3, or
4 directional  CQ words  were used,  as allowed  by the  77-bit source
encoding.
This commit is contained in:
Bill Somerville 2019-07-23 02:02:39 +01:00
parent 5c21aacb4a
commit 7dfe51ab8e
No known key found for this signature in database
GPG Key ID: D864B06D1E81618F

View File

@ -10,7 +10,7 @@ extern "C" {
namespace
{
QRegularExpression words_re {R"(^(?:(?<word1>(?:CQ|DE|QRZ)(?:\s?DX|\s(?:[A-Z]{2}|\d{3}))|[A-Z0-9/]+)\s)(?:(?<word2>[A-Z0-9/]+)(?:\s(?<word3>[-+A-Z0-9]+)(?:\s(?<word4>(?:OOO|(?!RR73)[A-R]{2}[0-9]{2})))?)?)?)"};
QRegularExpression words_re {R"(^(?:(?<word1>(?:CQ|DE|QRZ)(?:\s?DX|\s(?:[A-Z]{1,4}|\d{3}))|[A-Z0-9/]+)\s)(?:(?<word2>[A-Z0-9/]+)(?:\s(?<word3>[-+A-Z0-9]+)(?:\s(?<word4>(?:OOO|(?!RR73)[A-R]{2}[0-9]{2})))?)?)?)"};
}
DecodedText::DecodedText (QString const& the_string)
@ -168,11 +168,6 @@ void DecodedText::deCallAndGrid(/*out*/QString& call, QString& grid) const
call = match.captured ("word2");
grid = match.captured ("word3");
if ("R" == grid) grid = match.captured ("word4");
if(match.captured("word1")=="CQ" and call.length()<=4 and !call.contains(QRegExp("[0-9]"))) {
//Second word has length 1-4 and contains no digits
call = match.captured ("word3");
grid = match.captured ("word4");
}
}
unsigned DecodedText::timeInSeconds() const