summaryrefslogtreecommitdiffstats
path: root/libkdepim/kregexp3.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'libkdepim/kregexp3.cpp')
-rw-r--r--libkdepim/kregexp3.cpp183
1 files changed, 0 insertions, 183 deletions
diff --git a/libkdepim/kregexp3.cpp b/libkdepim/kregexp3.cpp
deleted file mode 100644
index c4efa96f1..000000000
--- a/libkdepim/kregexp3.cpp
+++ /dev/null
@@ -1,183 +0,0 @@
-/* -*- c++ -*-
- kregexp3.cpp
-
- This file is part of libkdenetwork.
- Copyright (c) 2001 Marc Mutz <mutz@kde.org>
-
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU General Public License,
- version 2, as published by the Free Software Foundation.
-
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- General Public License for more details.
-
- You should have received a copy of the GNU General Public License
- along with this library; if not, write to the Free Software
- Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
- In addition, as a special exception, the copyright holders give
- permission to link the code of this library with any edition of
- the TQt library by Trolltech AS, Norway (or with modified versions
- of TQt that use the same license as TQt), and distribute linked
- combinations including the two. You must obey the GNU General
- Public License in all respects for all of the code used other than
- TQt. If you modify this file, you may extend this exception to
- your version of the file, but you are not obligated to do so. If
- you do not wish to do so, delete this exception statement from
- your version.
-*/
-
-#include "kregexp3.h"
-
-// #define DEBUG_KREGEXP3
-
-#ifdef DEBUG_KREGEXP3
-#include <kdebug.h>
-#endif
-
-TQString KRegExp3::replace( const TQString & str,
- const TQString & replacementStr,
- int start, bool global )
-{
- int oldpos, pos;
-
- //-------- parsing the replacementStr into
- //-------- literal parts and backreferences:
- TQStringList literalStrs;
- TQValueList<int> backRefs;
-
- // Due to LTS: The regexp in unquoted form and with spaces:
- // \\ (\d) | \$ (\d) | \$ \{ (\d+) \}
- TQRegExp rx( "\\\\(\\d)|\\$(\\d)|\\$\\{(\\d+)\\}" );
- TQRegExp bbrx("\\\\");
- TQRegExp brx("\\");
-
-#ifdef DEBUG_KREGEXP3
- kdDebug() << "Analyzing replacementStr: \"" + replacementStr + "\"" << endl;
-#endif
-
- oldpos = 0;
- pos = 0;
- while ( true ) {
- pos = rx.search( replacementStr, pos );
-
-#ifdef DEBUG_KREGEXP3
- kdDebug() << TQString(" Found match at pos %1").tqarg(pos) << endl;
-#endif
-
- if ( pos < 0 ) {
- literalStrs << replacementStr.mid( oldpos )
- .replace( bbrx, "\\" )
- .replace( brx, "" );
-#ifdef DEBUG_KREGEXP3
- kdDebug() << " No more matches. Last literal is \"" + literalStrs.last() + "\"" << endl;
-#endif
- break;
- } else {
- literalStrs << replacementStr.mid( oldpos, pos-oldpos )
- .replace( bbrx, "\\" )
- .replace( brx, "" );
-#ifdef DEBUG_KREGEXP3
- kdDebug() << TQString(" Inserting \"") + literalStrs.last() + "\" as literal." << endl;
- kdDebug() << " Searching for corresponding digit(s):" << endl;
-#endif
- for ( int i = 1 ; i < 4 ; i++ )
- if ( !rx.cap(i).isEmpty() ) {
- backRefs << rx.cap(i).toInt();
-#ifdef DEBUG_KREGEXP3
- kdDebug() << TQString(" Found %1 at position %2 in the capturedTexts.")
- .tqarg(backRefs.last()).tqarg(i) << endl;
-#endif
- break;
- }
- pos += rx.matchedLength();
-#ifdef DEBUG_KREGEXP3
- kdDebug() << TQString(" Setting new pos to %1.").tqarg(pos) << endl;
-#endif
- oldpos = pos;
- }
- }
-
-#ifdef DEBUG_KREGEXP3
- kdDebug() << "Finished the analysis of replacementStr!" << endl;
-#endif
- Q_ASSERT( literalStrs.count() == backRefs.count() + 1 );
-
- //-------- actual construction of the
- //-------- resulting TQString
- TQString result = "";
- oldpos = 0;
- pos = start;
-
- TQStringList::Iterator sIt;
- TQValueList<int>::Iterator iIt;
-
- if ( start < 0 )
- start += str.length();
-
-#ifdef DEBUG_KREGEXP3
- kdDebug() << "Constructing the resultant string starts now:" << endl;
-#endif
-
- while ( pos < (int)str.length() ) {
- pos = search( str, pos );
-
-#ifdef DEBUG_KREGEXP3
- kdDebug() << TQString(" Found match at pos %1").tqarg(pos) << endl;
-#endif
-
- if ( pos < 0 ) {
- result += str.mid( oldpos );
-#ifdef DEBUG_KREGEXP3
- kdDebug() << " No more matches. Adding trailing part from str:" << endl;
- kdDebug() << " result == \"" + result + "\"" << endl;
-#endif
- break;
- } else {
- result += str.mid( oldpos, pos-oldpos );
-#ifdef DEBUG_KREGEXP3
- kdDebug() << " Adding unchanged part from str:" << endl;
- kdDebug() << " result == \"" + result + "\"" << endl;
-#endif
- for ( sIt = literalStrs.begin(), iIt = backRefs.begin() ;
- iIt != backRefs.end() ; ++sIt, ++iIt ) {
- result += (*sIt);
-#ifdef DEBUG_KREGEXP3
- kdDebug() << " Adding literal replacement part:" << endl;
- kdDebug() << " result == \"" + result + "\"" << endl;
-#endif
- result += cap( (*iIt) );
-#ifdef DEBUG_KREGEXP3
- kdDebug() << " Adding captured string:" << endl;
- kdDebug() << " result == \"" + result + "\"" << endl;
-#endif
- }
- result += (*sIt);
-#ifdef DEBUG_KREGEXP3
- kdDebug() << " Adding literal replacement part:" << endl;
- kdDebug() << " result == \"" + result + "\"" << endl;
-#endif
- }
- if (matchedLength() == 0 && pos == 0) {
- // if we matched the begin of the string, then better avoid endless
- // recursion
- result += str.mid( oldpos );
- break;
- }
- pos += matchedLength();
-#ifdef DEBUG_KREGEXP3
- kdDebug() << TQString(" Setting new pos to %1.").tqarg(pos) << endl;
-#endif
- oldpos = pos;
-
- if ( !global ) {
- // only replace the first occurrence, so stop here:
- result += str.mid( oldpos );
- break;
- }
- }
-
- return result;
-}