Ben Ashton
2 years ago
3 changed files with 118 additions and 1 deletions
@ -0,0 +1,96 @@ |
|||||||
|
|
||||||
|
# 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>'; |
||||||
|
printf '%s' ''; |
||||||
|
while read restaurant; do |
||||||
|
printf '%s' ' <li>'; |
||||||
|
printf '%s' "$restaurant" | jq -Rrj @html; |
||||||
|
printf '%s\n' '</li>'; |
||||||
|
printf '%s' ''; |
||||||
|
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>'; |
||||||
|
printf '%s' ''; |
||||||
|
``` |
||||||
|
|
||||||
|
Which when executed might products 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'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/) |
||||||
|
|
@ -0,0 +1,21 @@ |
|||||||
|
$ #!/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> |
Loading…
Reference in new issue