summaryrefslogtreecommitdiff
path: root/packages/fcl-mustache/examples/demo2.lpr
blob: 4b5b20f88523ca02f47aa04e813355c22c0f0ea4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
{ Demo for mustache engine with database context

  Copyright (C) 2021 michael Van Canneyt michael@freepascal.org

  This source is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as
  published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.

  This code is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more details.

  A copy of the GNU General Public License is available on the World Wide Web at <http://www.gnu.org/copyleft/gpl.html>. You can
  also obtain it by writing to the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1335, USA.
}

program demo2;

uses csvdataset, fpmustache, fpdbmustache;

Const
  // Mock markdown table
  Template =
     '| name | age | '+sLineBreak+
     '|------|------|'+sLineBreak+
     '{{#family}}| {{name}} | {{age}} |'+sLineBreak+
     '{{/family}}';

Var
  M : TMustache;
  C : TMustacheDBContext;
  D : TCSVDataset;

begin
  M:=TMustache.Create(Nil);
  try
    D:=TCSVDataset.Create(Nil);
    D.CSVOptions.FirstLineAsFieldNames:=True;
    D.LoadFromFile('family.csv');
    C:=TMustacheDBContext.Create(Nil);
    C.AddDataset(D,'family');
    M.Template:=Template;
    Writeln(M.Render(C));
  finally
    M.Free;
    D.Free;
    C.Free;
  end;
end.