Grantlee: Grantlee::Context Class Reference

Grantlee 5.3.0

Public Types | Public Member Functions | List of all members
Grantlee::Context Class Reference

The Context class holds the context to render a Template with. More...

`#include <grantlee/context.h>`

## Public Types
enum | UrlType { AbsoluteUrls , RelativeUrls }

## Public Member Functions
| Context ()
| Context (const Context &other)
| Context (const QVariantHash &hash)
| ~Context ()
QList< QPair< QString, QString > > | externalMedia () const
void | insert (const QString &name, const QVariant &variant)
void | insert (const QString &name, QObject *object)
QSharedPointer< AbstractLocalizer > | localizer () const
QVariant | lookup (const QString &str) const
Context & | operator= (const Context &other)
void | pop ()
void | push ()
QString | relativeMediaPath () const
RenderContext * | renderContext () const
void | setLocalizer (QSharedPointer< AbstractLocalizer > localizer)
void | setRelativeMediaPath (const QString &relativePath)
void | setUrlType (UrlType type)
UrlType | urlType () const

## Detailed Description

For application developers, using the Context class is a matter of inserting keys and values as appropriate for rendering a Template using the insert method.

auto t = engine->newTemplate(
"Name is {% name %} and age is {% age %}.", "some_template" );
Context c1;
c1.insert( "name", "Tom" );
c1.insert( "age", 34 );
Context c2;
c2.insert( "name", "Harry" );
c2.insert( "age", 43 );
t->render(c1); // Returns "Name is Tom and age is 43."
t->render(c2); // Returns "Name is Harry and age is 34."
Grantlee::Context
The Context class holds the context to render a Template with.
Definition context.h:118
Grantlee::Context::insert
void insert(const QString &name, QObject *object)

Note that one Template may be rendered multiple times with different contexts. Note also that any QVariant may be inserted into a Context object. Most commonly, QObjects will be used here.

See also
  Custom objects

# Context Stack.

For template tag developers, some other Context API is relevant.

It is possible to push and pop layers of context while a template is being rendered. This is useful if your template tag makes additional variables temporarily available in a part of a template. Template tags should only modify layers of context that they push themselves, and should pop any layers created before finishing its rendering step.

See for example the `{% with %}` tag. In a template such as

Some content
{% with person.name|toUpper as lowerName %}
Name is {% lowerName %}
{% endwith %}

In this case, lowerName is available in the context only between the `{% with %}` and `{% endwith %}` tags. The implementation of the `{% with %}` tag render method is:

void WithNode::render( OutputStream *stream, Context *c ) const
{
c->push();
// {% with m_filterExpression as m_name %}
c->insert( m_name, m_filterExpression.resolve( c ) );
m_list.render( stream, c );
c->pop(); // The section of context defining m_name is removed.
}
Grantlee::Context::pop
void pop()
Grantlee::Context::push
void push()
Grantlee::OutputStream
The OutputStream class is used to render templates to a QTextStream.
Definition outputstream.h:81

Note that a Context may temporarily override a variable in a parent context. This is why it is important to push a new context when adding items to context and pop it when finished.

Some content
{% with "foo" as var %}
Var is {% var %} // Var is "foo"
{% with "bar" as var %}
Var is {% var %} // Var is "bar"
{% endwith %}
Var is {% var %} // Var is "foo"
{% endwith %}

Author
  Stephen Kelly steve.nosp@m.ire@.nosp@m.gmail.nosp@m..com

Definition at line 117 of file context.h.

## Member Enumeration Documentation

## ◆ UrlType

enum Grantlee::Context::UrlType

The type of urls to external media that should be put in the template.

Enumerator
AbsoluteUrls | Absolute URLs should be put in the template.
RelativeUrls | Relative URLs should be put in the template.

Definition at line 241 of file context.h.

## Constructor & Destructor Documentation

## ◆ Context() [1/3]

Grantlee::Context::Context | ( |  | ) |

Creates an empty context

## ◆ Context() [2/3]

Grantlee::Context::Context | ( | const QVariantHash & | hash | ) |
| explicit

Sets every key in the hash as a property name with the variant as the value.

## ◆ Context() [3/3]

Grantlee::Context::Context | ( | const Context & | other | ) |

Copy Constructor

## ◆ ~Context()

Grantlee::Context::~Context | ( |  | ) |

Destructor

## Member Function Documentation

## ◆ externalMedia()

QList< QPair< QString, QString > > Grantlee::Context::externalMedia | ( |  | ) | const

Returns the external media encountered in the Template while rendering.

## ◆ insert() [1/2]

void Grantlee::Context::insert | ( | const QString & | name,
|  | const QVariant & | variant )

Insert the context object `variant` identified by `name` into the Context.

## ◆ insert() [2/2]

void Grantlee::Context::insert | ( | const QString & | name,
|  | QObject * | object )

Insert the context object `object` identified by `name` into the Context.

## ◆ localizer()

QSharedPointer< AbstractLocalizer > Grantlee::Context::localizer | ( |  | ) | const

Returns the localizer currently in use.

## ◆ lookup()

QVariant Grantlee::Context::lookup | ( | const QString & | str | ) | const

Returns the context object identified by the key `str`

## ◆ operator=()

Context & Grantlee::Context::operator= | ( | const Context & | other | ) |

Assignmant operator

## ◆ pop()

void Grantlee::Context::pop | ( |  | ) |

Pops the context.

See also
  Context Stack.

## ◆ push()

void Grantlee::Context::push | ( |  | ) |

Pushes a new context.

See also
  Context Stack.

## ◆ relativeMediaPath()

QString Grantlee::Context::relativeMediaPath | ( |  | ) | const

The relative path to external media to be used in templates.

## ◆ renderContext()

RenderContext * Grantlee::Context::renderContext | ( |  | ) | const

Returns a modifiable RenderContext. This may be used to make Template rendering threadsafe so that render state does not need to be stored in the Node implementation itself.

## ◆ setLocalizer()

void Grantlee::Context::setLocalizer | ( | QSharedPointer< AbstractLocalizer > | localizer | ) |

Sets the `localizer` to be used.

The Context takes ownerwhip of the localizer.

## ◆ setRelativeMediaPath()

void Grantlee::Context::setRelativeMediaPath | ( | const QString & | relativePath | ) |

Sets the relative path to external media to be used in templates to `relativePath`

See also
  media_finder

## ◆ setUrlType()

void Grantlee::Context::setUrlType | ( | UrlType | type | ) |

Sets the type of external media URL to be used in the template to `type`.

See also
  media_finder

## ◆ urlType()

UrlType Grantlee::Context::urlType | ( |  | ) | const

The type of URL used in the template.