class Poco::JSON::Template

Overview

Template is a template engine which uses JSON as input for generating output. More…

#include <Template.h>

class Template
{
public:
    // typedefs

    typedef SharedPtr<Template> Ptr;

    // construction

    Template();
    Template(const Path& templatePath);

    // methods

    void
    parse();

    void
    parse(const std::string& source);

    void
    parse(std::istream& in);

    Timestamp
    parseTime() const;

    void
    render(
        const Dynamic::Var& data,
        std::ostream& out
        ) const;
};

Detailed Documentation

Template is a template engine which uses JSON as input for generating output.

There are commands for looping over JSON arrays, include other templates, conditional output, etc.

All text is send to the outputstream. A command is placed between

<?

and

?>

These are the available commands:

<? echo query ?>

The result of the query is send to the output stream This command can also be written as <?= query ?>

<? if query ?> <? else ?> <? endif ?>

When the result of query is true, all the text between if and else (or endif when there is no else) is send to the output stream. When the result of query is false, all the text between else and endif is send to the output stream. An empty object, an empty array or a null value is considered as a false value. For numbers a zero is false. An empty String is also false.

<? ifexist query ?> <? else ?> <? endif ?>

This can be used to check the existence of the value. Use this for example when a zero value is ok (which returns false for <? if ?>.

<? for variable query ?> <? endfor ?>

The result of the query must be an array. For each element in the array the text between for and endfor is send to the output stream. The active element is stored in the variable.

<? include "filename" ?>

Includes a template. When the filename is relative it will try to resolve the filename against the active template. When this file doesn’t exist, it can still be found when the JSONTemplateCache is used.

A query is passed to Poco::JSON::Query to get the value.

Construction

Template()

Creates a Template.

Template(const Path& templatePath)

Creates a Template from the file with the given templatePath.

Methods

void
parse()

Parse a template from a file.

void
parse(const std::string& source)

Parse a template from a string.

void
parse(std::istream& in)

Parse a template from an input stream.

Timestamp
parseTime() const

Returns the time when the template was parsed.

void
render(
    const Dynamic::Var& data,
    std::ostream& out
    ) const

Renders the template and send the output to the stream.