From 1b2f99223d69b6af64b2eb82fca6aeafd7f7a703 Mon Sep 17 00:00:00 2001
From: mbsoftlab <50733221+mbsoftlab@users.noreply.github.com>
Date: Fri, 25 Dec 2020 15:13:55 +0100
Subject: [PATCH 01/28] TE-1 Reading TemplateDataModel from JSON (#5)
* TE-1 Added Extension Methods for reading data from JSON
* TE-1 Update Readme for v1.0.8-preview
* TE-1 Renamed Method CreateStringFromTemplateWithJson
* TE-1 Renamed Tests
* TE-1 Update AssemblyVersion and FileVersion
---
.../DummyJsonData.json | 15 +++
...MbSoftLab.TemplateEngine.Core.Tests.csproj | 10 +-
.../TemplateEngineUnitTest.cs | 38 +++----
.../UnitTestBase.cs | 4 +
.../Documentation.xml | 99 +++++++++++++++++++
.../MbSoftLab.TemplateEngine.Core.csproj | 8 +-
.../TemplateEngine.cs | 13 +--
.../TemplateEngineExtensions.cs | 24 +++++
README.md | 2 +
9 files changed, 175 insertions(+), 38 deletions(-)
create mode 100644 MbSoftLab.TemplateEngine.Core.Tests/DummyJsonData.json
create mode 100644 MbSoftLab.TemplateEngine.Core/Documentation.xml
create mode 100644 MbSoftLab.TemplateEngine.Core/TemplateEngineExtensions.cs
diff --git a/MbSoftLab.TemplateEngine.Core.Tests/DummyJsonData.json b/MbSoftLab.TemplateEngine.Core.Tests/DummyJsonData.json
new file mode 100644
index 0000000..9bb5dad
--- /dev/null
+++ b/MbSoftLab.TemplateEngine.Core.Tests/DummyJsonData.json
@@ -0,0 +1,15 @@
+{
+ "DummyStringProp1": "DummyStringProp1Value",
+ "DummyIntProp1": 1,
+ "DummBoolProp1": true,
+ "DummyBoolQProp1": true,
+ "DummyDoubleProp1": 1.75,
+ "DummyDateTimeProp1": "2020-01-01T00:00:00",
+ "DummyInt64Prop": 1234567,
+ "DummyUInt16": 8,
+ "DummyInt16": -8,
+ "DummyDecimalProp": 55,
+ "DummyCharProp": "c",
+ "DummyByteProp": 255,
+ "DummySByteProp": -5
+}
\ No newline at end of file
diff --git a/MbSoftLab.TemplateEngine.Core.Tests/MbSoftLab.TemplateEngine.Core.Tests.csproj b/MbSoftLab.TemplateEngine.Core.Tests/MbSoftLab.TemplateEngine.Core.Tests.csproj
index f95803f..7501a7f 100644
--- a/MbSoftLab.TemplateEngine.Core.Tests/MbSoftLab.TemplateEngine.Core.Tests.csproj
+++ b/MbSoftLab.TemplateEngine.Core.Tests/MbSoftLab.TemplateEngine.Core.Tests.csproj
@@ -8,12 +8,18 @@
-
-
+
+
+
+
+ Always
+
+
+
\ No newline at end of file
diff --git a/MbSoftLab.TemplateEngine.Core.Tests/TemplateEngineUnitTest.cs b/MbSoftLab.TemplateEngine.Core.Tests/TemplateEngineUnitTest.cs
index 7c3bc32..5dd3ef1 100644
--- a/MbSoftLab.TemplateEngine.Core.Tests/TemplateEngineUnitTest.cs
+++ b/MbSoftLab.TemplateEngine.Core.Tests/TemplateEngineUnitTest.cs
@@ -12,9 +12,8 @@ public class TemplateEngineUnitTest : UnitTestBase
{
[Test]
- public void can_create_a_valid_template()
+ public void can_create_a_valid_string_from_template()
{
-
//Arrange
var sut = new TemplateEngine(GetTemplateDataModelDummy(), "${DummyStringProp1}"); //SUT = [S]ystem [U]nder [T]est
string ShouldReturnString = "DummyStringProp1Value";
@@ -22,6 +21,20 @@ public void can_create_a_valid_template()
//Act Ausführen der zu testenden Funktion
string ReturnString = sut.CreateStringFromTemplate();
+ //Assert
+ Assert.AreEqual(ShouldReturnString, ReturnString);
+ }
+ [Test]
+ public void can_create_a_valid_string_from_template_with_json()
+ {
+ //Arrange
+ var sut = new TemplateEngine(); //SUT = [S]ystem [U]nder [T]est
+ sut.TemplateString = "${DummyStringProp1}";
+ string ShouldReturnString = "DummyStringProp1Value";
+ string jsonData = GetDummyJson();
+
+ //Act Ausführen der zu testenden Funktion
+ string ReturnString = sut.CreateStringFromTemplateWithJson(jsonData);
//Assert
Assert.AreEqual(ShouldReturnString, ReturnString);
@@ -29,7 +42,6 @@ public void can_create_a_valid_template()
[Test]
public void can_handle_null_Values_in_Propertys()
{
-
//Arrange
var sut = new TemplateEngine(GetTemplateDataModelDummy(), "${DummyStringProp2}"); //SUT = [S]ystem [U]nder [T]est
string ShouldReturnString = "NULL";
@@ -37,14 +49,12 @@ public void can_handle_null_Values_in_Propertys()
//Act Ausführen der zu testenden Funktion
string ReturnString = sut.CreateStringFromTemplate();
-
//Assert
Assert.AreEqual(ShouldReturnString, ReturnString);
}
[Test]
public void can_set_a_custom_null_value_String()
{
-
//Arrange
var sut = new TemplateEngine(GetTemplateDataModelDummy(), "${DummyStringProp2}"); //SUT = [S]ystem [U]nder [T]est
sut.NullStringValue = "Nothing";
@@ -53,7 +63,6 @@ public void can_set_a_custom_null_value_String()
//Act
string ReturnString = sut.CreateStringFromTemplate();
-
//Assert
Assert.AreEqual(ShouldReturnString, ReturnString);
}
@@ -69,7 +78,6 @@ public void can_set_a_template()
//Act
string ReturnString = sut.CreateStringFromTemplate();
-
//Assert
Assert.AreEqual(ShouldReturnString, ReturnString);
}
@@ -94,7 +102,6 @@ public void can_use_the_config()
//Act
string ReturnString = sut.CreateStringFromTemplate();
-
//Assert
Assert.AreEqual(ShouldReturnString, ReturnString);
}
@@ -119,7 +126,6 @@ public void can_use_the_generic_config()
//Act
string ReturnString = sut.CreateStringFromTemplate();
-
//Assert
Assert.AreEqual(ShouldReturnString, ReturnString);
}
@@ -134,7 +140,6 @@ public void can_set_a_template_and_model_on_creating()
//Act
string ReturnString = sut.CreateStringFromTemplate(GetTemplateDataModelDummy(), "${DummyStringProp2}");
-
//Assert
Assert.AreEqual(ShouldReturnString, ReturnString);
}
@@ -150,7 +155,6 @@ public void can_set_a_model_on_creating()
//Act
string ReturnString = sut.CreateStringFromTemplate(GetTemplateDataModelDummy());
-
//Assert
Assert.AreEqual(ShouldReturnString, ReturnString);
}
@@ -166,7 +170,6 @@ public void can_set_a_DataModel_with_Annonymos_Type()
//Act
string ReturnString = sut.CreateStringFromTemplate();
-
//Assert
Assert.AreEqual(ShouldReturnString, ReturnString);
}
@@ -183,7 +186,6 @@ public void can_set_a_different_DataModel_with_annonymos_type_after_create_an_in
//Act
string ReturnString = sut.CreateStringFromTemplate();
-
//Assert
Assert.AreEqual(ShouldReturnString, ReturnString);
}
@@ -202,7 +204,6 @@ public void can_change_the_default_delimiters()
//Act
string ReturnString = sut.CreateStringFromTemplate();
-
//Assert
Assert.AreEqual(ShouldReturnString, ReturnString);
}
@@ -212,14 +213,12 @@ public void throws_exeption_if_type_not_supported()
//Arrange
var sut = new TemplateEngine(GetAWrongTemplateDataModelDummy(), "${DummyObjectProp1}"); //SUT = [S]ystem [U]nder [T]est
-
//Assert
Assert.Throws(delegate
{
//Act
sut.CreateStringFromTemplate();
});
-
}
[Test]
public void throws_excepton_if_file_load_fail()
@@ -264,7 +263,6 @@ public void can_handle_return_values_from_a_method(string methodName, string ret
//Act
string ReturnString = sut.CreateStringFromTemplate();
-
//Assert
Assert.AreEqual(ShouldReturnString, ReturnString);
}
@@ -281,7 +279,6 @@ public void can_handle_return_values_from_IntReturningMethod()
//Act
string ReturnString = sut.CreateStringFromTemplate();
-
//Assert
Assert.AreEqual(ShouldReturnString, ReturnString);
}
@@ -299,7 +296,6 @@ public void can_handle_return_values_from_DoubleReturningMethod()
//Act
string ReturnString = sut.CreateStringFromTemplate();
-
//Assert
Assert.AreEqual(ShouldReturnString, ReturnString);
}
@@ -359,7 +355,6 @@ public void can_handle_date_values_from_propertys()
//Act Ausführen der zu testenden Funktion
string ReturnString = sut.CreateStringFromTemplate();
-
//Assert Prüfen der Ergebnisse
Assert.AreEqual(ShouldReturnString, ReturnString);
}
@@ -380,6 +375,5 @@ public void can_create_and_use_SpecificCulture()
//Assert
Assert.AreEqual(ShouldReturnString, ReturnString);
}
-
}
-}
+}
\ No newline at end of file
diff --git a/MbSoftLab.TemplateEngine.Core.Tests/UnitTestBase.cs b/MbSoftLab.TemplateEngine.Core.Tests/UnitTestBase.cs
index b94bc4f..495ac5e 100644
--- a/MbSoftLab.TemplateEngine.Core.Tests/UnitTestBase.cs
+++ b/MbSoftLab.TemplateEngine.Core.Tests/UnitTestBase.cs
@@ -53,6 +53,10 @@ public TemplateDataModelDummy GetTemplateDataModelDummy()
return templateDataModelFake;
}
+ public string GetDummyJson()
+ {
+ return System.IO.File.ReadAllText("DummyJsonData.json");
+ }
public TemplateDataModelDummyWithList GetTemplateDataModelDummyWithListAndMethod()
{
TemplateDataModelDummyWithList templateDataModelFake = new TemplateDataModelDummyWithList
diff --git a/MbSoftLab.TemplateEngine.Core/Documentation.xml b/MbSoftLab.TemplateEngine.Core/Documentation.xml
new file mode 100644
index 0000000..4d0663d
--- /dev/null
+++ b/MbSoftLab.TemplateEngine.Core/Documentation.xml
@@ -0,0 +1,99 @@
+
+
+
+ MbSoftLab.TemplateEngine.Core
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ A simple StringTemplateengine for .NET.
+ See for more details
+
+
+
+
+ Beginning Char for a PlaceholderProperty. The Defaultvalue ist "${".
+
+
+
+
+ Ending Char for a PlaceholderProperty. Der Default ist "}".
+
+
+
+
+ Model with propertys to fill ${PlaceholderPropertys} in the template. The propertynames at DataModel has to be equal with ${Placeholder}
+
+
+
+
+ The Templatestring with ${PlaceholderPropertys}
+
+
+
+
+ Get or Set the string for NULL-Values. Default = NULL.
+
+
+
+
+ Replaces all Propertys of templateDataModel in stringTemplate. The Popertynames from templateDataModel a the name of ${Placeholder} have to be equal.
+ Example: public string MyProperty => ${MyProperty}
+
+ File with Data from TemplateDataModel
+
+
+
+ Replaces all Propertys of templateDataModel in stringTemplate. The Popertynames from templateDataModel a the name of ${Placeholder} have to be equal.
+ Example: public string MyProperty => ${MyProperty}
+
+ File with Data from TemplateDataModel
+
+
+
+ Replaces all Propertys of templateDataModel in stringTemplate. The Popertynames from templateDataModel a the name of ${Placeholder} have to be equal.
+ Example: public string MyProperty => ${MyProperty}
+
+ File with Data from TemplateDataModel
+
+
+
+ Replaces all Propertys of templateDataModel in stringTemplate. The Popertynames from templateDataModel a the name of ${Placeholder} have to be equal.
+ Example: public string MyProperty => ${MyProperty}
+
+ File with Data from TemplateDataModel
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Load the TemplateDataModel from JSON and builds a String with this Data
+
+
+
+
+ Loads a Templatestring from File
+
+ Path to File with Templatestring.
+
+
+
diff --git a/MbSoftLab.TemplateEngine.Core/MbSoftLab.TemplateEngine.Core.csproj b/MbSoftLab.TemplateEngine.Core/MbSoftLab.TemplateEngine.Core.csproj
index 93c7b12..bff15ab 100644
--- a/MbSoftLab.TemplateEngine.Core/MbSoftLab.TemplateEngine.Core.csproj
+++ b/MbSoftLab.TemplateEngine.Core/MbSoftLab.TemplateEngine.Core.csproj
@@ -2,10 +2,10 @@
netcoreapp3.1
- 1.0.7.0
- 1.0.7.0
- 1.0.7
- 1.0.7
+ 1.0.8.0
+ 1.0.8.0
+ 1.0.8
+ 1.0.8-preview
This StringTemplateEngine can replace values from Classpropertys and methods in stringtemplates
Documentation.xml
true
diff --git a/MbSoftLab.TemplateEngine.Core/TemplateEngine.cs b/MbSoftLab.TemplateEngine.Core/TemplateEngine.cs
index 8612bce..e223663 100644
--- a/MbSoftLab.TemplateEngine.Core/TemplateEngine.cs
+++ b/MbSoftLab.TemplateEngine.Core/TemplateEngine.cs
@@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Globalization;
+using System.Text.Json;
namespace MbSoftLab.TemplateEngine.Core
{
@@ -93,22 +94,14 @@ public TemplateEngine(T templateDataModel)
{
_templateDataModel = templateDataModel;
}
-
+
public TemplateEngine()
{
}
#endregion
- ///
- /// Loads a Templatestring from File
- ///
- /// Path to File with Templatestring.
- public void LoadTemplateFromFile(string path)
- {
- TemplateString = System.IO.File.ReadAllText(path);
- }
-
+
///
/// Replaces all Propertys of templateDataModel in stringTemplate. The Popertynames from templateDataModel a the name of ${Placeholder} have to be equal.
/// Example: public string MyProperty => ${MyProperty}
diff --git a/MbSoftLab.TemplateEngine.Core/TemplateEngineExtensions.cs b/MbSoftLab.TemplateEngine.Core/TemplateEngineExtensions.cs
new file mode 100644
index 0000000..f23cd00
--- /dev/null
+++ b/MbSoftLab.TemplateEngine.Core/TemplateEngineExtensions.cs
@@ -0,0 +1,24 @@
+using System.Text.Json;
+
+namespace MbSoftLab.TemplateEngine.Core
+{
+ public static class TemplateEngineExtensions
+ {
+ ///
+ /// Load the TemplateDataModel from JSON and builds a String with this Data
+ ///
+ public static string CreateStringFromTemplateWithJson(this TemplateEngine templateEngine, string jsonData)
+ {
+ templateEngine.TemplateDataModel = JsonSerializer.Deserialize(jsonData);
+ return templateEngine.CreateStringFromTemplate();
+ }
+ ///
+ /// Loads a Templatestring from File
+ ///
+ /// Path to File with Templatestring.
+ public static void LoadTemplateFromFile(this TemplateEngine templateEngine, string path)
+ {
+ templateEngine.TemplateString = System.IO.File.ReadAllText(path);
+ }
+ }
+}
\ No newline at end of file
diff --git a/README.md b/README.md
index 304a10c..3f72cfe 100644
--- a/README.md
+++ b/README.md
@@ -63,6 +63,8 @@ PM> Install-Package MbSoftLab.TemplateEngine.Core
|Methodname |Description |
|------------------------------------------------------------------------|-----------------------------------------------------------------|
|`string CreateStringFromTemplate([string template])` |*Creates a String from Datamodell and Template* |
+|`string CreateStringFromJson(templateEngine, string jsonData)` |*Loads the Templatedata from JSON*.
+ |
|`void LoadTemplateFromFile(string filename)` |*Loads a Stringtemplate from file*. |
|`TemplateEngine()` |Constructor |
|`TemplateEngine(object templateDataModel, string stringTemplate)` |Constructor |
From e99ca46ff1201e30c56daafcef8aec46e4f59f57 Mon Sep 17 00:00:00 2001
From: mbsoftlab
Date: Wed, 30 Dec 2020 20:16:38 +0100
Subject: [PATCH 02/28] TE-8 Extract interface for TemplateEngine
(ITemplateEngine)
---
.../ITemplateEngine.cs | 19 ++++++++
.../TemplateEngine.cs | 44 ++++++++++---------
2 files changed, 42 insertions(+), 21 deletions(-)
create mode 100644 MbSoftLab.TemplateEngine.Core/ITemplateEngine.cs
diff --git a/MbSoftLab.TemplateEngine.Core/ITemplateEngine.cs b/MbSoftLab.TemplateEngine.Core/ITemplateEngine.cs
new file mode 100644
index 0000000..efe3271
--- /dev/null
+++ b/MbSoftLab.TemplateEngine.Core/ITemplateEngine.cs
@@ -0,0 +1,19 @@
+using System.Globalization;
+
+namespace MbSoftLab.TemplateEngine.Core
+{
+ public interface ITemplateEngine
+ {
+ string CloseingDelimiter { get; set; }
+ ITemplateEngineConfig Config { get; set; }
+ CultureInfo CultureInfo { get; set; }
+ string NullStringValue { get; set; }
+ string OpeningDelimiter { get; set; }
+ T TemplateDataModel { get; set; }
+ string TemplateString { get; set; }
+
+ string CreateStringFromTemplate(string stringTemplate = null);
+ string CreateStringFromTemplate(T templateDataModel);
+ string CreateStringFromTemplate(T templateDataModel, string stringTemplate);
+ }
+}
\ No newline at end of file
diff --git a/MbSoftLab.TemplateEngine.Core/TemplateEngine.cs b/MbSoftLab.TemplateEngine.Core/TemplateEngine.cs
index e223663..0b5e5ed 100644
--- a/MbSoftLab.TemplateEngine.Core/TemplateEngine.cs
+++ b/MbSoftLab.TemplateEngine.Core/TemplateEngine.cs
@@ -9,7 +9,7 @@ namespace MbSoftLab.TemplateEngine.Core
/// A simple StringTemplateengine for .NET.
/// See for more details
///
- public class TemplateEngine : TemplateEngine