No-template: Difference between revisions

From unkrig.de
Jump to navigation Jump to search
mNo edit summary
(Replaced content with "A super-small Java library for templating, i.e. generating text files (HTML, XML, whatever) from a "template" text file. The project home page is [https://github.com/aunk...")
 
(6 intermediate revisions by the same user not shown)
Line 1: Line 1:
A super-small Java library for templating, i.e. generating text files (HTML, XML, whatever) from a "template" text file.
A super-small Java library for templating, i.e. generating text files (HTML, XML, whatever) from a "template" text file.


Working with the common templating frameworks (Freemarker, JSP, PHP, ...), you probably agree on the following inconveniences and problems:
The project home page is [https://github.com/aunkrig/no-template here].
 
* Each framework has its own syntax and semantics for implementing the dynamic part of a document (variables, control structures, in-source documentation, ...).
* Because the nesting of control structures and the indentation of the static content are generally not identical, it is very hard to write easily-readable code.
* Most templating frameworks have no static typing, i.e. you must always be careful when using (or worse: re-using) variables, because there is no "compile-time checking" of types.
* Powerful debuggers are not available in many cases, so you typcially revert to looking at log files.
* Because there are so many different templating engines, you favorite IDE possibly offers no advanced editor with code completion, refactoring, and the like.
* If the templating engine involves some kind of an "translation" step, then that must be executed on each and every code change - at worst manually.
 
The approach of <code>no-template</code> is as simple as it could be:
 
package com.acme.notemplatedemo;
import de.unkrig.notemplate.*;
public
class MyTemplate extends NoTemplate {
    // It is good practice to declare a method "render()" with
    // exactly the parameters of the document to be rendered.
 
    public void
    render(String firstName, String lastName, int age) {
        // Method "l(String...)" prints its arguments as lines.
        this.l(
"<!DOCTYPE html>",
"<html>",
"  <head>",
"    <title>My first template</title>",
"  </head>",
"  <body>",
"    This is my very first template.",
"    &lt;br />",
"    Hello " + firstName + " " + lastName + ",",
"    you must be " + age + " years old!",
"  </body>",
"</html>"
        );
    }
    public static void
    main(String[] args) {
        // Demonstrate how to render a document with this template:
        NoTemplate.render(MyTemplate.class, new File("JohnDoe99.html"), (MyTemplate t) -> {
            t.render("John", "Doe", 99);
        });
    }
}
 
And that would be it!
 
== Resources ==
 
Find the binaries [http://no-template.unkrig.de/download/ here].
 
Find the source code [https://github.com/aunkrig/no-template here].
 
Find the JAVADOC [http://no-template.unkrig.de/javadoc/index.html here].

Latest revision as of 12:13, 3 June 2016

A super-small Java library for templating, i.e. generating text files (HTML, XML, whatever) from a "template" text file.

The project home page is here.