RSCG–Template Rendering- part 17
name | Transplator |
nuget | https://www.nuget.org/packages/Transplator/ |
link | https://github.com/atifaziz/Transplator/ |
author | Atif Aziz |
The Transplator is a small fast rendering engine to allow you to make rendering from any class instance. The code that you start with is
{% using System.Collections.Generic; using System.Linq; using System.Text; using Rendering; static partial class EmployeeRendering { public static string Render(params Employee[] employees) { var sb = new StringBuilder(); int i= 0; -%} Number Employees: {% employees?.Length %} {%~ foreach (var emp in employees) { i++; ~%} {% i %}. {% emp.Name %} it is in {% emp.Department?.Name %} {%~ } ~%} {% return sb.ToString(); void WriteText(string value) => sb.Append(value); void WriteValue(object value) => sb.Append(value); } } ~%}
The code that you will use is
var IT = new Department(); IT.Name = "IT"; var e = new Employee(); e.ID = 10; e.Name = "Andrei Ignat"; e.Department = IT; var render = EmployeeRendering.Render(e); Console.WriteLine(render);
The code that is generated is
using System.Collections.Generic; using System.Linq; using System.Text; using Rendering; static partial class EmployeeRendering { public static string Render(params Employee[] employees) { var sb = new StringBuilder(); int i= 0; WriteText(@"Number Employees: "); WriteValue(employees?.Length); WriteText(@" "); foreach (var emp in employees) { i++; WriteText(@" "); WriteValue(i); WriteText(@". "); WriteValue(emp.Name); WriteText(@" it is in "); WriteValue(emp.Department?.Name); WriteText(@" "); } return sb.ToString(); void WriteText(string value) => sb.Append(value); void WriteValue(object value) => sb.Append(value); } }
Example Code: https://github.com/ignatandrei/RSCG_Examples/tree/main/TemplateRender