File indexing completed on 2024-05-19 05:54:08

0001 /*
0002     SPDX-FileCopyrightText: 2020-2020 Gustavo Carneiro <gcarneiroa@hotmail.com>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #include "ColorFilter.h"
0008 
0009 using namespace Konsole;
0010 
0011 #include "ColorFilterHotSpot.h"
0012 
0013 // This matches:
0014 //   - an RGB-style string (e.g., #3e3, #feed) delimited by non-alphanumerics;
0015 //   - or, a sequence of ASCII characters (e.g., foobar, Aquamarine, TOMATO).
0016 // See the docs for `QColor::setNamedColor`.
0017 const QRegularExpression
0018     ColorFilter::ColorRegExp(QStringLiteral("((?<![[:alnum:]])"
0019                                             "#[[:xdigit:]]{3,12}"
0020                                             "(?![[:alnum:]])|"
0021                                             "\\b[a-zA-Z]{3,20}\\b)"));
0022 
0023 ColorFilter::ColorFilter()
0024 {
0025     setRegExp(ColorRegExp);
0026 }
0027 
0028 QSharedPointer<HotSpot> ColorFilter::newHotSpot(int startLine, int startColumn, int endLine, int endColumn, const QStringList &capturedTexts)
0029 {
0030     QColor color(capturedTexts.at(1));
0031 
0032     // Make sure we've actually matched a color.
0033     if (!color.isValid()) {
0034         return nullptr;
0035     }
0036 
0037     return QSharedPointer<HotSpot>(new ColorFilterHotSpot(startLine, startColumn, endLine, endColumn, capturedTexts, color));
0038 }