/usr/include/grantlee/outputstream.h is in libgrantlee-dev 0.4.0-0ubuntu1.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | /*
This file is part of the Grantlee template system.
Copyright (c) 2010 Stephen Kelly <steveire@gmail.com>
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either version
2.1 of the Licence, 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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef GRANTLEE_OUTPUTSTREAM_H
#define GRANTLEE_OUTPUTSTREAM_H
#include "grantlee_core_export.h"
#include <QtCore/QSharedPointer>
#include <QtCore/QTextStream>
namespace Grantlee
{
class SafeString;
/// @headerfile outputstream.h grantlee/outputstream.h
/**
@brief The OutputStream class is used to render templates to a QTextStream
A OutputStream instance may be passed to the render method of a Template to render
the template to a stream.
@code
QFile outputFile("./output");
outputFile.open(QFile::WriteOnly);
QTextStream tstream( &outputFile );
OutputStream os(&tstream);
t->render( &os, &context );
@endcode
The OutputStream is used to escape the content streamed to it. By default, the escaping is html escaping, converting "&" to "&" for example. If generating non-html output, the escape method may be overriden to perform a different escaping, or non at all.
If overriding the escape method, the clone method must also be overriden to return an OutputStream with the same escaping behaviour.
@code
class NoEscapeStream : public Grantlee::OutputStream
{
public:
// ...
QString escape( const QString &input ) const
{
return input;
}
QSharedPointer<OutputStream> clone( QTextStream *stream ) const
{
QSharedPointer<OutputStream> clonedStream = QSharedPointer<OutputStream>( new NoEscapeStream( stream ) );
return clonedStream;
}
};
@endcode
@author Stephen Kelly <steveire@gmail.com>
*/
class GRANTLEE_CORE_EXPORT OutputStream
{
public:
/**
Creates a null OutputStream. Content streamed to this OutputStream is sent to /dev/null
*/
OutputStream();
/**
Creates an OutputStream which will stream content to @p stream with appropriate escaping.
*/
explicit OutputStream( QTextStream *stream );
/**
Destructor
*/
virtual ~OutputStream();
/**
Returns an escaped version of @p input. Does not write anything to the stream.
*/
virtual QString escape( const QString &input ) const;
/**
Returns an escaped version of @p input. Does not write anything to the stream.
*/
QString escape( const SafeString &input ) const;
/**
Returns an cloned OutputStream with the same filtering behaviour.
*/
virtual QSharedPointer<OutputStream> clone( QTextStream *stream ) const;
/**
Returns @p after escaping it, unless @p input is "safe", in which case, @p input is returned unmodified.
*/
QString conditionalEscape( const Grantlee::SafeString &input ) const;
/**
Writes @p input to the stream after escaping it.
*/
OutputStream& operator<<( const QString &input );
/**
Writes @p input to the stream after escaping it if necessary.
*/
OutputStream& operator<<( const SafeString &input );
/**
Reads the content of @p stream and writes it unmodified to the result stream.
*/
OutputStream& operator<<( QTextStream *stream );
private:
QTextStream *m_stream;
Q_DISABLE_COPY( OutputStream )
};
}
#endif
|