Skip to content

mbsoftlab/MbSoftLab.TemplateEngine.Core

Repository files navigation

MbSoftLab.TemplateEngine.Core

BuildFromDevelop BuildFromMasterRelease

Codequality (master branch) CodeFactor

Codequality (develop branch) CodeFactor

namespace MbSoftLab.TemplateEngine.Core
{
    public class TemplateEngine : TemplateEngine<object>{}

    public class TemplateEngine<T>{...}
}

The TemplateEngine replaces values from properties of C# classes in template strings. The C# class with the data holding properties is called the TemplateDataModel class. The string with the placeholders is called a string template or template string.

You can bind the value from your C-property to your string template by using ${YourPropertyName}. You can set a custom delimiters. Use the OpeningDelimiter and CloseingDelimiter properties to handle this.

Also you can access parameterless public methods of TemplateDataModell classes by using ${MethodName()} in your template.

The default is ${ for the start delimiter and } for the end delimiter.

 Person person = new Person
 {
     FirstName = "Jo",
     LastName="Doe"
 };

string template = "<MyTag>${FirstName}, ${LastName}</MyTag>";

TemplateEngine templateEngine = new TemplateEngine(person,template);
string outputString = templateEngine.CreateStringFromTemplate();

Console.Write(outputString); // Output: <MyTag>Jo, Doe</MyTag> 

Install Package

NuGet Package: https://www.nuget.org/packages/MbSoftLab.TemplateEngine.Core/

PM> Install-Package MbSoftLab.TemplateEngine.Core

Methods

Methodname Description
string CreateStringFromTemplate([string template]) Creates a String from Datamodell and Template
void LoadTemplateFromFile(string filename) Loads a Stringtemplate from file.
TemplateEngine() Constructor
TemplateEngine(object templateDataModel, string stringTemplate) Constructor
TemplateEngine(object templateDataModel) Constructor
TemplateEngine<T>() Constructor
TemplateEngine<T>(T templateDataModel, string stringTemplate) Constructor
TemplateEngine<T>(T templateDataModel) Constructor

Propertys

Propertyname Datatype Description
OpeningDelimiter String Set the beginning delimiter for propertyreplacement
CloseingDelimiter String Set the ending delimiter for propertyreplacement
TemplateDataModel Generic / object Modell with Properys for Dataholding
TemplateString string Templatestring
NullStringValue string String for NULL-Values
CultureInfo CultureInfo Culture for Double and DateTime values

Exampels

Load the template and fill with Data from modell

// Create a modell Class for Data
 TemplateDataModel templateDataModel = new TemplateDataModel
 {
     ProjectName = "Projektname"
 };

string template = "<MyTag>${ProjectName}</MyTag>";

TemplateEngine templateEngine = new TemplateEngine(templateDataModel,template);
string outputString = templateEngine.CreateStringFromTemplate();

Console.Write(outputString); // Output: <MyTag>ProjectName</MyTag> 

Load template from file

    TemplateDataModel templateDataModel = new TemplateDataModel
    {
      ProjectName = "Projektname",
      CustomerId = "1234",
      ProjectUrl = "https://google.com"
    };

     TemplateEngine templateEngine = new TemplateEngine(templateDataModel);
     templateEngine.LoadTemplateFromFile("Html.template.html");
     string outputString = templateEngine.CreateStringFromTemplate();

     Console.WriteLine(outputString);

Template and model over PropertyInjection

 TemplateDataModel templateDataModel = new TemplateDataModel
 {
     ProjectName = "Projectname",
     CustomerId = "1234",
     ProjectUrl = "https://google.com"
 };

 string template = "<p>${ProjectName}</p>";
 TemplateEngine templateEngine = new TemplateEngine();
 templateEngine.TemplateDataModel = templateDataModel;
 templateEngine.TemplateString = template;
 Console.WriteLine(templateEngine.CreateStringFromTemplate());

Template and model over DependencyInjection

  TemplateDataModel templateDataModel = new TemplateDataModel
  {
      ProjectName = "Projectname",
      CustomerId = "1234",
      ProjectUrl = "https://google.com"
  };

  string template = "<p>${ProjectName}</p>";
  TemplateEngine templateEngine = new TemplateEngine(templateDataModel,template);
  Console.WriteLine(templateEngine.CreateStringFromTemplate());

TemplateEngine with PropertyInjection and generic type

 TemplateDataModel templateDataModel = new TemplateDataModel
 {
     ProjectName = "Projectname",
     CustomerId = null,
     ProjectUrl = "https://google.de"
 };

 string template = "<p>{{ProjectName}}</p><p>{{CustomerId}}</p>";
 TemplateEngine<TemplateDataModel> templateEngine = new TemplateEngine<TemplateDataModel>()
 {
     TemplateDataModel = templateDataModel,
     TemplateString = template,
     OpeningDelimiter = "{{",
     CloseingDelimiter = "}}",
     NullStringValue = "???"
 };
 Console.WriteLine(templateEngine.CreateStringFromTemplate());

Datatype compatibility

  • ✔ String
  • ✔ Byte
  • ✔ Short
  • ✔ UShort
  • ✔ Long
  • ✔ ULong
  • ✔ SByte
  • ✔ Char
  • ✔ UInt16
  • ✔ Int32
  • ✔ UInt64
  • ✔ Int16
  • ✔ Int32
  • ✔ Int64
  • ✔ Decimal
  • ✔ Double
  • ✔ DateTime
  • ✔ Boolean
  • ❌ Object
  • ❌ CustomClasses
  • ❌ IList, List, Dictionary, IEnumerable, etc..

Repo

Issues

report an issue