I developed something here modeled after jade for c++. It takes a simple but powerful input language and creates a single c++ template function that writes HTML to a stream.
< html
< h1 The title is ${{ params["title"] }}& >
< ul >
& for(int i = 0; i < boost::get(params["items"]); ++i) {
< li Item ${{ i }}$ >
& }
>
- Variable replacement
- User defined code blocks
- harvests full power of c++ (loops, variable declarations, you name it)
- Super easy to integrate into source builds
- Everything possible done at compile time
- No intermediate format (straight c++)
- Easy to debug (because c++ output)
- No external dependencies
- Super tiny less than 600 lines of c++
- GPL licensed