I'd like to advertise the Sempare Template Engine for Delphi. The Sempare Template Engine for Delphi allows for flexible text manipulation. It can be used for generating email, html, source code, xml, configuration, etc.
It is available on github via https://github.com/sempare/sempare-delphi-template-engine
It is also available via Delphinus (https://github.com/Memnarch/Delphinus)
Simply add the 'src' directory to the search path to get started.
Sample usage:
program Example;
uses
Sempare.Template;
type
TInformation = record
name: string;
favourite_sport : string;
end;
begin
var tpl := Template.parse('My name is <% name %>. My favourite sport is <% favourite_sport %>.');
var information : TInformation;
information.name := 'conrad';
information.favourite_sport := 'ultimate';
writeln(Template.eval(tpl, information));
end.
Features include:
statements
if, elif, else statements
for and while statements
include statement
with statement
function/method calls
expressions
simple expression evaluation (logical, numerical and string)
variable definition
functions and methods calls
dereference records, classes, arrays, JSON objects, TDataSet descendants and dynamic arrays
ternary operator
safety
max run-time protection
customisation
custom script token replacement
add custom functions
strip recurring spaces and new lines
lazy template resolution
parse time evaluation of expressions/statements
allow use of custom encoding (UTF-8 with BOM, UTF-8 without BOM, ASCII, etc)
extensible RTTI interface to easily dereference classes and interfaces (current customisations for ITemplateVariables, TDictionary, TJsonObject)
There are numerous unit tests that can be reviewed as to how to use the various features.
Happy for all to play with it. Released under GPL and Commercial License.
Any feedback welcome.