Beispiel #1
0
void SpacelessNode::render( OutputStream *stream, Context *c ) const
{
  QString output;
  QTextStream textStream( &output );
  QSharedPointer<OutputStream> temp = stream->clone( &textStream );
  m_nodeList.render( temp.data(), c );
  ( *stream ) << markSafe( stripSpacesBetweenTags( output.trimmed() ) );
}
SafeString BlockNode::getSuper() const
{
  if ( m_context->renderContext()->contains( BLOCK_CONTEXT_KEY ) ) {
    QVariant &variant = m_context->renderContext()->data( BLOCK_CONTEXT_KEY );
    const BlockContext blockContext = variant.value<BlockContext>();
    BlockNode *block = blockContext.getBlock( m_name );
    if ( block ) {
      QString superContent;
      QTextStream superTextStream( &superContent );
      QSharedPointer<OutputStream> superStream = m_stream->clone( &superTextStream );
      const_cast<BlockNode*>( this )->render( superStream.data(), m_context );
      return markSafe( superContent );
    }
  }
  return SafeString();
}
Beispiel #3
0
QVariant PlainTextFilter::doFilter(const QVariant& input, const QVariant& argument, bool autoescape) const
{
  QTextDocument *document = qobject_cast<QTextDocument*>(input.value<QObject*>());

  if (!document)
    return QString();

  AudioPlainTextBuilder *builder = new AudioPlainTextBuilder();
  Grantlee::MarkupDirector *director = new AudioTextDocumentDirector(builder);

  director->processDocument(document);
  QString result = builder->getResult();
  delete director;
  delete builder;
  return markSafe(result);
}
QVariant JoinFilter::doFilter( const QVariant& input, const QVariant &argument, bool autoescape ) const
{
  QVariantList varList = MetaType::toVariantList( input );
  QListIterator<QVariant> i( varList );
  QString ret;
  while ( i.hasNext() ) {
    QVariant var = i.next();
    Grantlee::SafeString s = getSafeString( var );
    if ( autoescape )
      s = conditionalEscape( s );

    ret.append( s );
    if ( i.hasNext() ) {
      SafeString argString = getSafeString( argument );
      ret.append( conditionalEscape( argString ) );
    }
  }
  return markSafe( ret );
}
Beispiel #5
0
QVariant JoinFilter::doFilter(const QVariant &input, const QVariant &argument,
                              bool autoescape) const
{
  if (!input.canConvert<QVariantList>())
    return QVariant();

  auto iter = input.value<QSequentialIterable>();

  QString ret;
  for (auto it = iter.begin(); it != iter.end(); ++it) {
    const auto var = *it;
    auto s = getSafeString(var);
    if (autoescape)
      s = conditionalEscape(s);

    ret.append(s);
    if ((it + 1) != iter.end()) {
      auto argString = getSafeString(argument);
      ret.append(conditionalEscape(argString));
    }
  }
  return markSafe(ret);
}