Not html, a very simple template engine
Go to file
Julian Daube 7fe73e879e added useful readme and added includes 2017-08-08 22:24:00 +02:00
example added useful readme and added includes 2017-08-08 22:24:00 +02:00
inc added useful readme and added includes 2017-08-08 22:24:00 +02:00
src added useful readme and added includes 2017-08-08 22:24:00 +02:00
CMakeLists.txt refactored code and ported project to cmake 2017-08-08 20:05:30 +02:00
LICENSE Initial commit 2017-08-07 10:39:45 +02:00
README.md added useful readme and added includes 2017-08-08 22:24:00 +02:00
test.nhtml changed literal text operator from ' to ( 2017-08-08 17:49:52 +02:00

README.md

nhtml

!html, a very simple template language

Syntax

As said above, the Template Language is simple. That also implies a few limitations:

  1. No Parametric instantiation (for now) since this would bloat the compiler too much (I was in no need for that feature when writing this compiler).
  2. No language integration of any kind. This makes this template compiler useful for static webcontent only!

Sooo, how does it work?

  • text enclosed with "" will be placed in the html output, but will be html escaped and \n will be replaced with <br/>.

  • text enclosed with () will be placed without any changes.

  • One can include other files by writing either @<filename>, e.g. @hi.nhtml or @"<filename>", e.g. @"filename with spaces.nhtml" These files will pe pasted in place unless they end with .nhtml, in which case they get compiled before getting pasted.

  • There are comment blocks (/*text*/) and linecomments (//text) like there are in C.

  • A left curly brace ({) opens a tag, a coresponding right curly brace (}) closes it.

  • Finally, tag names are simply written as text and can be accompied by an attribute set enclosed in []. So in order to e.g. produce <div style="color:white">Hi</div>, the corresponding nhtml would look something like div[style=color:white]{"Hi"}.

  • If the Attributes Key-Name is class, its pair can be written as .<value> instead of class=<value>. Note that multiple mentions of the same attribute key will result in the attribute values beeing concatenated with a space. So e.g. p[.A class=hi]{} will become <p class="A hi"></p>.

That about covers everything this little thing can do :) For a simple demo, look in example.

How to compile

The Project used cmake to build. It has no hard dependencies but it requires unix-style pathnames. (/path/to/file) for includes to work.

on linux

Simply install cmake for your distro

Ubuntu

apt-get install cmake

Arch Linux

pacman -S cmake

The create a subdirectory for the build to reside in mkdir build cd build

And run cmake Release: cmake -G"Unix Makefiles" .. Debug: cmake -G"Unix Makefiles" .. -DCMAKE_BUILD_TYPE=DEBUG

after that run make and you should be left with a compiled version of the !html compiler nhtmlc

How to use

./nhtmlc [-o <filename>] file [file...]
-I	Add Path to include paths
--output
-o	The output file to write the html to
	When missing this option, stdout is used instead
-v	Enable verbose output
--help Print this usage

When given multple input files, the resulting html is concatenated into output.