11# Hyperbee Templating
22
33Hyperbee Templating is a lightweight templating and variable substitution syntax engine. The library supports value replacements,
4- code expressions, token nesting, in-line definitions, conditional flow, and looping. It is designed to be lightweight and fast,
5- and does not rely on any external dependencies.
4+ code expressions, token nesting, in-line definitions, conditional flow, and looping. It is designed to be lightweight and fast.
65
76## Features
87
@@ -33,34 +32,32 @@ dotnet add package Hyperbee.Templating
3332You can use the ` TemplateParser ` to perform variable substitutions.
3433
3534``` csharp
36- var parser = new TemplateParser
35+ var template = " hello {{name}}." ;
36+
37+ var result = Template .Render (template , new ()
3738{
3839 Variables =
3940 {
4041 [" name" ] = " me"
4142 }
42- };
43-
44- var template = " hello {{name}}." ;
43+ });
4544
46- var result = parser .Render (template );
4745Console .WriteLine (result ); // Output: hello me.
4846```
4947
5048### Expression Substitution
5149
5250``` csharp
53- var parser = new TemplateParser
51+ var template = " hello {{x => x.name.ToUpper()}}." ;
52+
53+ var result = Template .Render (template , new ()
5454{
5555 Variables =
5656 {
5757 [" name" ] = " me"
5858 }
59- };
60-
61- var template = " hello {{x => x.name.ToUpper()}}." ;
59+ });
6260
63- var result = parser .Render (template );
6461Console .WriteLine (result ); // Output: hello ME.
6562```
6663
@@ -69,19 +66,18 @@ Console.WriteLine(result); // Output: hello ME.
6966Token values can contain other tokens.
7067
7168``` csharp
72- var parser = new TemplateParser
69+ var template = " hello {{fullname}}." ;
70+
71+ var result = Template .Render (template , new ()
7372{
7473 Variables =
7574 {
7675 [" fullname" ] = " {{first}} {{last}}" ,
7776 [" first" ] = " Hari" ,
7877 [" last" ] = " Seldon"
7978 }
80- };
81-
82- var template = " hello {{fullname}}." ;
79+ });
8380
84- var result = parser .Render (template );
8581Console .WriteLine (result ); // Output: hello Hari Seldon.
8682```
8783
@@ -90,35 +86,33 @@ Console.WriteLine(result); // Output: hello Hari Seldon.
9086You can use conditional tokens to control the flow based on conditions.
9187
9288``` csharp
93- var parser = new TemplateParser
89+ var template = " {{#if condition}}hello {{name}}.{{/if}}" ;
90+
91+ var result = Template .Render (template , new ()
9492{
9593 Variables =
9694 {
9795 [" condition" ] = " true" ,
9896 [" name" ] = " me"
9997 }
100- };
101-
102- var template = " {{#if condition}}hello {{name}}.{{/if}}" ;
98+ });
10399
104- var result = parser .Render (template );
105100Console .WriteLine (result ); // Output: hello me.
106101```
107102
108103``` csharp
109- var parser = new TemplateParser
104+ var template = " hello {{#if condition}}{{name1}}{{else}}{{name2}}{{/if}}." ;
105+
106+ var result = Template .Render (template , new ()
110107{
111108 Variables =
112109 {
113110 [" condition" ] = " false" ,
114111 [" name1" ] = " me" ,
115112 [" name2" ] = " you" ,
116113 }
117- };
118-
119- var template = " hello {{#if condition}}{{name1}}{{else}}{{name2}}{{/if}}." ;
114+ });
120115
121- var result = parser .Render (template );
122116Console .WriteLine (result ); // Output: hello you.
123117```
124118
@@ -127,17 +121,16 @@ Console.WriteLine(result); // Output: hello you.
127121You can use a while statement to repeat a block of text while a condition is true.
128122
129123``` csharp
130- var parser = new TemplateParser
124+ var template = " {{while x => x.counter<int> < 3}}{{counter}}{{counter:{{x => x.counter<int> + 1}}}}{{/while}}" ;
125+
126+ var result = Template .Render (template , new ()
131127{
132128 Variables =
133129 {
134130 [" counter" ] = " 0"
135131 }
136- };
137-
138- var template = " {{while x => x.counter<int> < 3}}{{counter}}{{counter:{{x => x.counter<int> + 1}}}}{{/while}}" ;
132+ });
139133
140- var result = parser .Render (template );
141134Console .WriteLine (result ); // Output: 012.
142135```
143136
@@ -146,30 +139,31 @@ Console.WriteLine(result); // Output: 012.
146139``` csharp
147140var template = " {{each n:x => x.list.Split( \" ,\" )}}World {{n}},{{/each}}" ;
148141
149- var parser = new TemplateParser
142+ var result = Template . Render ( template , new ()
150143{
151- Variables = { [" list" ] = " John,James,Sarah" }
152- };
144+ Variables =
145+ {
146+ [" list" ] = " John,James,Sarah"
147+ }
148+ });
153149
154- var result = parser .Render (template );
155150Console .WriteLine (result ); // hello World John,World James,World Sarah,.
156151```
157152
158153``` csharp
159154
160155var template = " {{each n:x => x.Where( t => Regex.IsMatch( t.Key, \" people*\" ) ).Select( t => t.Value )}}hello {{n}}. {{/each}}" ;
161156
162- var parser = new TemplateParser
157+ var result = Template . Render ( template , new ()
163158{
164159 Variables =
165- {
166- [" people[0]" ] = " John" ,
167- [" people[1]" ] = " Jane" ,
168- [" people[2]" ] = " Doe"
169- }
170- };
171-
172- var result = parser .Render (template );
160+ {
161+ [" people[0]" ] = " John" ,
162+ [" people[1]" ] = " Jane" ,
163+ [" people[2]" ] = " Doe"
164+ }
165+ });
166+
173167Console .WriteLine (result ); // hello John. hello Jane. hello Doe.
174168```
175169
@@ -182,11 +176,10 @@ var options = new TemplateOptions()
182176 .AddVariable (" name" , " me" )
183177 .AddMethod (" ToUpper" ).Expression <string ,string >( value => value .ToUpper () );
184178
185- var parser = new TemplateParser ( options );
186-
187179var template = " hello {{x => x.ToUpper( x.name )}}." ;
188180
189- var result = parser .Render (template );
181+ var result = Template .Render (template , options );
182+
190183Console .WriteLine (result ); // Output: hello ME.
191184```
192185
0 commit comments