1
/* This file is part of the KDE libraries
2
Copyright (C) 2007 Sebastian Pipping <webmaster@hartwork.org>
4
This library is free software; you can redistribute it and/or
5
modify it under the terms of the GNU Library General Public
6
License version 2 as published by the Free Software Foundation.
8
This library is distributed in the hope that it will be useful,
9
but WITHOUT ANY WARRANTY; without even the implied warranty of
10
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11
Library General Public License for more details.
13
You should have received a copy of the GNU Library General Public License
14
along with this library; see the file COPYING.LIB. If not, write to
15
the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
16
Boston, MA 02110-1301, USA.
19
#include "katewildcardmatcher.h"
25
namespace KateWildcardMatcher {
29
bool exactMatch(const QString & candidate, const QString & wildcard, int candidatePosFromRight,
30
int wildcardPosFromRight, bool caseSensitive = true) {
31
for (; wildcardPosFromRight >= 0; wildcardPosFromRight--) {
32
const ushort ch = wildcard[wildcardPosFromRight].unicode();
35
if (candidatePosFromRight == -1) {
39
if (wildcardPosFromRight == 0) {
43
// Eat all we can and go back as far as we have to
44
for (int j = -1; j <= candidatePosFromRight; j++) {
45
if (exactMatch(candidate, wildcard, j, wildcardPosFromRight - 1)) {
52
if (candidatePosFromRight == -1) {
56
candidatePosFromRight--;
60
if (candidatePosFromRight == -1) {
64
const ushort candidateCh = candidate[candidatePosFromRight].unicode();
65
const bool match = caseSensitive
67
: (QChar::toLower(candidateCh) == QChar::toLower(ch));
69
candidatePosFromRight--;
80
bool exactMatch(const QString & candidate, const QString & wildcard,
82
return exactMatch(candidate, wildcard, candidate.length() - 1,
83
wildcard.length() - 1, caseSensitive);