In this age of booming web development, there are web frameworks available for pushing out a web application as quickly as possible. However, sometimes that's too much and all you need is a static site, so you pick from one of the many static site generators and start building your site.
Sometimes even that's too much. You need to write a few HTML pages, and all you
want is a simple HTML templating tool so you don't have to type
html> a dozen times.
In the modern app-driven world, you would be hard-pressed to find such a tool ("simple" isn't in the vocabulary), but the old UNIX world offers a solution: M4.
M4 is a general text preprocessing tool and works nicely for templating HTML. Make header and footer templates:
m4_dnl header.m4 m4_dnl These lines can be used as comments. m4_dnl "dnl" means "delete to newline". <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <title>TITLE</title> m4_dnl This placeholder TITLE will be replaced later. </head> <body> m4_dnl footer.m4 </body> </html>
Write your content:
m4_dnl index.m4 m4_define(TITLE, My home page)m4_dnl m4_dnl The m4_define here defines a macro. m4_dnl "TITLE" will now be replaced with "My home page". m4_dnl That includes the "TITLE" in our header template. m4_dnl The "m4_dnl" after the "m4_define" removes the newline. m4_dnl It's only needed if you care about blank lines in the output. m4_include(header.m4)m4_dnl m4_dnl Here we include our header template. <h1>My home page</h1> <p>Hello World!</p> m4_include(footer.m4)m4_dnl m4_dnl Here we include our footer template.
$ m4 -P index.m4 > index.html
It's as simple as that. M4 offers other functions as well, so if you don't need a full static site generator, M4 should be able to fulfill any specific demands you have.