Template-Engine/README.md

94 lines
2.1 KiB
Markdown

# Template Engine
A shell script template engine for generating scripts that render HTML markup,
or anything really.
## Examples
```html
$ #!/bin/sh
$ title='My Restaurant Randomizer';
<!doctype html>
<html>
<head>
<title><% $title %></title>
</head>
<body>
<h1>Welcome to <% $title %></h1>
<p>From the following restaurants:</p>
<ul>
$ while read restaurant; do
<li><% $restaurant %></li>
$ done <restaurants.txt
</ul>
<p>
The fates have decided that you shall eat at:
<strong><$% shuf -n 1 restaurants.txt %></strong>
</p>
</body>
</html>
```
The above template will generate the following shell script:
```bash
#!/bin/sh
title='My Restaurant Randomizer';
printf '%s\n' '<!doctype html>';
printf '%s\n' '<html>';
printf '%s\n' ' <head>';
printf '%s' ' <title>';
printf '%s' "$title" | jq -Rrj @html;
printf '%s\n' '</title>';
printf '%s\n' ' </head>';
printf '%s\n' ' <body>';
printf '%s' ' <h1>Welcome to ';
printf '%s' "$title" | jq -Rrj @html;
printf '%s\n' '</h1>';
printf '%s\n' ' <p>From the following restaurants:</p>';
printf '%s\n' ' <ul>';
while read restaurant; do
printf '%s' ' <li>';
printf '%s' "$restaurant" | jq -Rrj @html;
printf '%s\n' '</li>';
done <restaurants.txt
printf '%s\n' ' </ul>';
printf '%s\n' ' <p>';
printf '%s\n' ' The fates have decided that you shall eat at:';
printf '%s' ' <strong>';
printf '%s' "$(shuf -n 1 restaurants.txt)" | jq -Rrj @html;
printf '%s\n' '</strong>';
printf '%s\n' ' </p>';
printf '%s\n' ' </body>';
printf '%s\n' '</html>';
```
Which when executed might produce the following HTML:
```html
<!doctype html>
<html>
<head>
<title>My Restaurant Randomizer</title>
</head>
<body>
<h1>Welcome to My Restaurant Randomizer</h1>
<p>From the following restaurants:</p>
<ul>
<li>Luigi&apos;s</li>
<li>Papa Johns</li>
<li>SushiQ</li>
</ul>
<p>
The fates have decided that you shall eat at:
<strong>Papa Johns</strong>
</p>
</body>
</html>
```
## License
[MIT](https://choosealicense.com/licenses/mit/)