diff options
Diffstat (limited to 'parts/appwizard/tdevlicense.cpp')
-rw-r--r-- | parts/appwizard/tdevlicense.cpp | 116 |
1 files changed, 116 insertions, 0 deletions
diff --git a/parts/appwizard/tdevlicense.cpp b/parts/appwizard/tdevlicense.cpp new file mode 100644 index 00000000..a720c6c3 --- /dev/null +++ b/parts/appwizard/tdevlicense.cpp @@ -0,0 +1,116 @@ +/* This file is part of the KDE project + Copyright (C) 2004 Sascha Cunz <[email protected]> + + This library is free software; you can redistribute it and/or + modify it under the terms of the GNU Library General Public + License as published by the Free Software Foundation; either + version 2 of the License, or (at your option) any later version. + + 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 + Library General Public License for more details. + + You should have received a copy of the GNU Library General Public License + along with this library; see the file COPYING.LIB. If not, write to + the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, + Boston, MA 02110-1301, USA. +*/ +#include "tdevlicense.h" + +#include <tqfile.h> +#include <tqdatetime.h> +#include <tqregexp.h> + +TDevLicense::TDevLicense( const TQString& name, const TQString& fileName ) + : m_name( name ) +{ + readFile( fileName ); +} + +void TDevLicense::readFile( const TQString& fileName ) +{ + TQFile f(fileName); + if (!f.open(IO_ReadOnly)) + return; + TQTextStream stream(&f); + TQString str; + enum { readingText, readingFiles } mode = readingText; + for(;;) + { + str = stream.readLine(); + if( str.isNull() ) + break; + if( str == "[FILES]" ) + mode = readingFiles; + else if( str == "[PREFIX]" ) + mode = readingText; + else if( mode == readingFiles ) + { + if( !str.isEmpty() ) + { + m_copyFiles.append( str ); + } + } else + m_rawLines.append( str ); + } + +} + +TQString TDevLicense::assemble( TDevFile::CommentingStyle commentingStyle, const TQString& author, const TQString& email, int leadingSpaces ) +{ + // first, build a CPP Style license + + TQString strFill; + strFill.fill( ' ', leadingSpaces ); + + TQString str = + strFill + "/***************************************************************************\n" + + strFill + " * Copyright (C) $YEAR$ by $AUTHOR$ *\n" + + strFill + " * $EMAIL$ *\n" + + strFill + " * *\n"; + +// str = str.arg(TQDate::currentDate().year()).arg(author.left(45),-45).arg(email.left(67),-67); + + TQStringList::Iterator it; + for( it = m_rawLines.begin(); it != m_rawLines.end(); ++it ) + { + str += TQString( "%1 * %2 *\n").arg( strFill ).arg( *it, -69 ); + } + + str += strFill + " ***************************************************************************/\n"; + + switch( commentingStyle ) + { + case TDevFile::CPPStyle: + case TDevFile::CStyle: + return str; + + case TDevFile::PascalStyle: + str.replace(TQRegExp("/\\**\n \\*"), "{\n "); + str.replace(TQRegExp("\\*\n \\*"), " \n "); + str.replace(TQRegExp(" *\\**/\n"), "}\n"); + return str; + + case TDevFile::AdaStyle: + str.replace(TQRegExp("/\\*"), "--"); + str.replace(TQRegExp(" \\*"), "--"); + str.replace(TQRegExp("\\*/"), "*"); + return str; + + case TDevFile::BashStyle: + str.replace(TQRegExp("\\*|/"), "#"); + str.replace(TQRegExp("\n ##"), "\n##"); + str.replace(TQRegExp("\n #"), "\n# "); + return str; + + case TDevFile::XMLStyle: + str.replace(TQRegExp("/\\*"), "<!--"); + str.replace(TQRegExp("\n \\*"), "\n<!--"); + str.replace(TQRegExp("\\*/?\n"), "-->\n"); + str.replace(TQRegExp("\\*"), "_"); + return str; + } + + return "currently unknown/unsupported commenting style"; +} |