X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcontrib%2Flibqxt-2007-10-24%2Fsrc%2Fweb%2Fqxthtmltemplate.cpp;fp=src%2Fcontrib%2Flibqxt-2007-10-24%2Fsrc%2Fweb%2Fqxthtmltemplate.cpp;h=1987b205e8addaf8e7c0cecd72b035c0ec858c7e;hp=0000000000000000000000000000000000000000;hb=a634acadbcf6017474f68a3eaf7cb632660e9e49;hpb=cd122ca8e0d2c0ffc5397e0a813c75d791a7e6e3 diff --git a/src/contrib/libqxt-2007-10-24/src/web/qxthtmltemplate.cpp b/src/contrib/libqxt-2007-10-24/src/web/qxthtmltemplate.cpp new file mode 100644 index 00000000..1987b205 --- /dev/null +++ b/src/contrib/libqxt-2007-10-24/src/web/qxthtmltemplate.cpp @@ -0,0 +1,147 @@ +/**************************************************************************** +** +** Copyright (C) Qxt Foundation. Some rights reserved. +** +** This file is part of the QxtWeb module of the Qt eXTension library +** +** This library is free software; you can redistribute it and/or modify it +** under the terms of th Common Public License, version 1.0, as published by +** IBM. +** +** This file is provided "AS IS", without WARRANTIES OR CONDITIONS OF ANY +** KIND, EITHER EXPRESS OR IMPLIED INCLUDING, WITHOUT LIMITATION, ANY +** WARRANTIES OR CONDITIONS OF TITLE, NON-INFRINGEMENT, MERCHANTABILITY OR +** FITNESS FOR A PARTICULAR PURPOSE. +** +** You should have received a copy of the CPL along with this file. +** See the LICENSE file and the cpl1.0.txt file included with the source +** distribution for more information. If you did not receive a copy of the +** license, contact the Qxt Foundation. +** +** +** +****************************************************************************/ + +/*! + \class QxtHtmlTemplate QxtHtmlTemplate + \ingroup QxtWeb + \brief Basic Html Template Engine + + open a file containing html code and php style variables. + use the square bracket operators to assign content for a variable + + \code + QxtHtmlTemplate index; + if(!index.open) + return 404; + index["content"]="hello world"; + echo()< + + Test Page + + + + \endcode + + funny storry: whe are using this class to make our documentation (eat your own dogfood, you know ;). + but when we where parsing exactly this file you read right now the first time, QxtHtmlTemplate got stuck in an infinite loop. guess why. becouse of that example above :D + So be warned: when you assign content to a variable that contains the variable name itself, render() will never return. + + +*/ + +/*! + \fn QxtHtmlTemplate::open(const QString& filename) + Returns true on sucess and false on failure. + note that it will also return false for an empty html file. + + \fn QString QxtHtmlTemplate::render() const + Uses the variables you set and renders the opened file. + returns an empty string on failure. + Does NOT take care of not assigned variables, they will remain in the returned string + */ + +#include "qxthtmltemplate.h" +#include +#include + +QxtHtmlTemplate::QxtHtmlTemplate() : QMap() +{} + +void QxtHtmlTemplate::load(const QString& d) +{ + data=d; +} + +bool QxtHtmlTemplate::open(const QString& filename) +{ + QFile f(filename); + f.open(QIODevice::ReadOnly); + data = QString::fromLocal8Bit(f.readAll()); + f.close(); + if (data.isEmpty()) + { + qWarning("QxtHtmlTemplate::open(\"%s\") empty or non existant",qPrintable(filename)); + return false; + } + return true; +} + +QString QxtHtmlTemplate::render() const +{ + ///try to preserve indention by parsing char by char and saving the last non-space character + + + QString output = data; + int lastnewline=0; + + + for (int i=0;i') + { + j=jj; + break; + } + var+=output.at(jj); + } + + + if (j==i) + { + qWarning("QxtHtmlTemplate::render() unterminated