aboutsummarylogtreecommitdiffstats
path: root/renderhtml.pas
blob: f1c94db83c02f6c4b70c2b785a16aeb544760e5a (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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
{Contains class Render for build HTML file using variables}
unit RenderHtml;

{$mode ObjFPC}{$H+}

interface

uses
  Classes, SysUtils, replacers, fgl, types_for_app;

type

  { Render }

  { @abstract(Template engine)
  Class for rendeing template to html using variables }
  Render = class
    { Hashmap for variables and their values }
    vars : sdict;
    { String contained HTML template }
    template : String;
    { Result of building template }
    html     : String;
    { Constructor }
    constructor Create;
    { Destructor }
    destructor Free;
    { Setter for member template }
    procedure setTemplate(aTemplate : String);
    { Setter for member vars }
    procedure setVar(varname, varvalue : String);
    { Builds member html }
    procedure buildHtml();
    { Getter of member html}
    function getHtml() : String;

  end;

implementation

{ Render }

constructor Render.Create;
begin
  vars:=sdict.Create;
end;

destructor Render.Free;
begin
  vars.Free;
end;

procedure Render.setTemplate(aTemplate: String);
begin
   template:=aTemplate;
end;

procedure Render.setVar(varname, varvalue: String);
begin
  vars.Add(varname, varvalue);
end;

procedure Render.buildHtml;
var R : String; i : Integer;
begin
  R:=template;
  for i:=0 to vars.count-1 do
   begin
     R:=applyVar(R, vars.Keys[i], vars.Data[i]);
   end;
  html:=R;
end;

function Render.getHtml: String;
begin
   buildHtml();
   result:=html;
end;

end.