Ich habe eine C++ Template Engine entwickelt und auf GitHub online gestellt. Die Inspiration dafür holte ich aus der Mustache Template Language, habe sie aber für mein Projekt erheblich vereinfacht. Diese Template Engine besteht praktisch nur aus einer Header-Datei und lässt sich daher hervorragend in bestehende Projekte integrieren. In dem Projekt wird bereits C++14 verwendet, daher ist es empfehlenswert einen modernen Compiler zum kompilieren zu verwenden. Ebenso besitzt die Engine vermutlich einer simpelsten Template Sprachen, da Logik im herkömmlichen Sinne eigentlich nur durch Lambdas umgesetzt werden kann. So versucht die Engine nicht selber etwas in den Variablen hineinzuinterpretieren, sondern überlässt das alles den Lambdas bzw. den benutzerdefinierten Funktionen.
Ich freue mich auf Fragen, Kritiken und Anregungen.
README.md: „This the reference implementation of the language.“: Dieser Satz keinen Sinn using std::unique_ptr; ist eine Lüge
Ansonsten … das „fachlich zu bewerten“ maße ich mir mal nicht an. Und ich kenne auch Mustache nicht, deswegen wüßte ich nicht, welche fiesen {{}} Kon{#{#struk}}te
ich verwenden könnte, um seine Grenzen auszuloten, und mich gleichzeitig noch in „gültigem Mustache“ zu bewegen. (Sind die drei {{{ beim Example in der Readme Absicht? Kann ich mir kaum vorstellen…)
Dankeschön für Rückmeldung. Ich gebe zu, README benötigt noch einige Korrekturen, denn sie ist nur mal auf die schnelle hingetippt worden und ja, unique_ptr hatte ich ursprünglich verwenden wollen, aber ich könnte mir es nochmal anschauen, ob ich es umsetze.
Afaik parst mein Toolkit noch kein gültiges Mustache, da bei den dreifachen Klammern hinten drei Klammern auch geschlossen werden müssten. Vielleicht implementiere ich das noch um Mustache ähnlicher zu wirken. Auch gibt es Konstrukte in Mustache, die auf ein booleschen Wert basieren, mach mir aber keine Mühe dafür, da die Logik durch Lambdas bestimmen kann.
Btw. Du kannst gerne Tests schreiben, die den Parser an seine Grenzen bringen. Nun ob es gültiges Mustache ist spielt weniger eine Rolle, da dem Parser sowieso einiges fehlt, um Mustache vollständig zu parsen.