You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
tdesdk/kompare/libdiff2/diffparser.cpp

82 lines
2.6 KiB

/**************************************************************************
** diffparser.cpp
** --------------
** begin : Sun Aug 4 15:05:35 2002
** copyright : (C) 2002-2004 Otto Bruggeman
** email : otto.bruggeman@home.nl
**
***************************************************************************/
/***************************************************************************
**
** This program is free software; you can redistribute it and/or modify
** it under the terms of the GNU General Public License as published by
** the Free Software Foundation; either version 2 of the License, or
** ( at your option ) any later version.
**
***************************************************************************/
#include <tqregexp.h>
#include <kdebug.h>
#include "diffparser.h"
using namespace Diff2;
DiffParser::DiffParser( const KompareModelList* list, const TQStringList& diff ) : ParserBase( list, diff )
{
// The regexps needed for context diff parsing, the rest is the same as in parserbase.cpp
m_contextDiffHeader1.setPattern( "\\*\\*\\* ([^\\t]+)\\t([^\\t]+)\\n" );
m_contextDiffHeader2.setPattern( "--- ([^\\t]+)\\t([^\\t]+)\\n" );
}
DiffParser::~DiffParser()
{
}
enum Kompare::Format DiffParser::determineFormat()
{
kdDebug(8101) << "Determining the format of the diff Diff" << endl;
TQRegExp normalRE ( "[0-9]+[0-9,]*[acd][0-9]+[0-9,]*" );
TQRegExp unifiedRE( "^--- " );
TQRegExp contextRE( "^\\*\\*\\* " );
TQRegExp rcsRE ( "^[acd][0-9]+ [0-9]+" );
TQRegExp edRE ( "^[0-9]+[0-9,]*[acd]" );
TQStringList::ConstIterator it = m_diffLines.begin();
while( it != m_diffLines.end() )
{
kdDebug(8101) << (*it) << endl;
if( (*it).tqfind( normalRE, 0 ) == 0 )
{
kdDebug(8101) << "Difflines are from a Normal diff..." << endl;
return Kompare::Normal;
}
else if( (*it).tqfind( unifiedRE, 0 ) == 0 )
{
kdDebug(8101) << "Difflines are from a Unified diff..." << endl;
return Kompare::Unified;
}
else if( (*it).tqfind( contextRE, 0 ) == 0 )
{
kdDebug(8101) << "Difflines are from a Context diff..." << endl;
return Kompare::Context;
}
else if( (*it).tqfind( rcsRE, 0 ) == 0 )
{
kdDebug(8101) << "Difflines are from an RCS diff..." << endl;
return Kompare::RCS;
}
else if( (*it).tqfind( edRE, 0 ) == 0 )
{
kdDebug(8101) << "Difflines are from an ED diff..." << endl;
return Kompare::Ed;
}
++it;
}
kdDebug(8101) << "Difflines are from an unknown diff..." << endl;
return Kompare::UnknownFormat;
}