Public Member Functions

Template Class Reference

Enhanced version of QString for template processing. More...

#include <template.h>

List of all members.

Public Member Functions

 Template (QString source, QString sourceName)
 Constructor that reads the template from a string.
 Template (QFile &file, QTextCodec *textCodec)
 Constructor that reads the template from a file.
int setVariable (QString name, QString value)
 Replace a variable by the given value.
int setCondition (QString name, bool value)
 Set a condition.
int loop (QString name, int repetitions)
 Set number of repetitions of a loop.
void enableWarnings (bool enable=true)
 Enable warnings for missing tags.

Detailed Description

Enhanced version of QString for template processing.

Templates are usually loaded from files, but may also be loaded from prepared Strings. Example template file:

 Hello {username}, how are you?

 {if locked}
     Your account is locked.
 {else locked}
     Welcome on our system.
 {end locked}

 The following users are on-line:
     Username       Time
 {loop user}
     {user.name}    {user.time}
 {end user}
 

Example code to fill this template:

 Template t(QFile("test.tpl"),QTextCode::codecForName("UTF-8"));
 t.setVariable("user", "Stefan");
 t.setCondition("locked",false);
 t.loop("user",2);
 t.setVariable("user0.name,"Markus");
 t.setVariable("user0.time,"8:30");
 t.setVariable("user1.name,"Roland");
 t.setVariable("user1.time,"8:45");
 

The code example above shows how variable within loops are numbered. Counting starts with 0. Loops can be nested, for example:

 <table>
 {loop row}
     <tr>
     {loop row.column}
         <td>{row.column.value}</td>
     {end row.column}
     </tr>
 {end row}
 </table>
 

Example code to fill this nested loop with 3 rows and 4 columns:

 t.loop("row",3);

 t.loop("row0.column",4);
 t.setVariable("row0.column0.value","a");
 t.setVariable("row0.column1.value","b");
 t.setVariable("row0.column2.value","c");
 t.setVariable("row0.column3.value","d");

 t.loop("row1.column",4);
 t.setVariable("row1.column0.value","e");
 t.setVariable("row1.column1.value","f");
 t.setVariable("row1.column2.value","g");
 t.setVariable("row1.column3.value","h");

 t.loop("row2.column",4);
 t.setVariable("row2.column0.value","i");
 t.setVariable("row2.column1.value","j");
 t.setVariable("row2.column2.value","k");
 t.setVariable("row2.column3.value","l");
 

See also:
TemplateLoader
TemplateCache

Definition at line 89 of file template.h.


Constructor & Destructor Documentation

Template::Template ( QString  source,
QString  sourceName 
)

Constructor that reads the template from a string.

Parameters:
source The template source text
sourceName Name of the source file, used for logging

Definition at line 9 of file template.cpp.

Template::Template ( QFile &  file,
QTextCodec *  textCodec 
)

Constructor that reads the template from a file.

Note that this class does not cache template files by itself, so using this constructor is only recommended to be used on local filesystem.

Parameters:
file File that provides the source text
textCodec Encoding of the source
See also:
TemplateLoader
TemplateCache

Definition at line 15 of file template.cpp.


Member Function Documentation

void Template::enableWarnings ( bool  enable = true  ) 

Enable warnings for missing tags.

Parameters:
enable Warnings are enabled, if true

Definition at line 184 of file template.cpp.

int Template::loop ( QString  name,
int  repetitions 
)

Set number of repetitions of a loop.

This affects tags with the syntax

  • {loop name}...{end name}
  • {loop name}...{else name}...{end name}
Parameters:
name Name of the loop
repetitions The number of repetitions
Returns:
The number of loops that have been processed

Definition at line 116 of file template.cpp.

int Template::setCondition ( QString  name,
bool  value 
)

Set a condition.

This affects tags with the syntax

  • {if name}...{end name}
  • {if name}...{else name}...{end name}
  • {ifnot name}...{end name}
  • {ifnot name}...{else name}...{end name}
Parameters:
name Name of the condition
value Value of the condition
Returns:
The count of conditions that have been processed

Definition at line 44 of file template.cpp.

int Template::setVariable ( QString  name,
QString  value 
)

Replace a variable by the given value.

Affects tags with the syntax

  • {name}

After settings the value of a variable, the variable does not exist anymore, it it cannot be changed multiple times.

Parameters:
name name of the variable
value new value
Returns:
The count of variables that have been processed

Definition at line 29 of file template.cpp.


The documentation for this class was generated from the following files: