From cd1a4e64646b1d314b48d134693125007b65118c Mon Sep 17 00:00:00 2001
From: Case Duckworth
Date: Sun, 30 Jun 2019 23:42:27 -0500
Subject: Add README and LICENSE

---
 LICENSE   |  13 ++++++
 README.md | 141 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
 2 files changed, 154 insertions(+)
 create mode 100644 LICENSE
 create mode 100644 README.md

diff --git a/LICENSE b/LICENSE
new file mode 100644
index 0000000..edae74f
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,13 @@
+DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+Version 2, December 2004
+
+Copyright (C) 2004 Sam Hocevar <sam@hocevar.net>
+
+Everyone is permitted to copy and distribute verbatim or modified
+copies of this license document, and changing it is allowed as long
+as the name is changed.
+
+DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+0. You just DO WHAT THE FUCK YOU WANT TO.
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..dc310d1
--- /dev/null
+++ b/README.md
@@ -0,0 +1,141 @@
+# UNK
+
+## a very small static site generator
+
+**UNK** is an experiment in minimalism.
+It is a templating static site generator
+with an included markup language
+that all fits with 1000 bytes.
+There are three main scripts:
+
+- **UNK**, a bash script that applies the template
+  to each page and publishes them to the output dir, and
+- **LHT**, an awk script that serves as a (very) basic
+  markup language.
+- **TM**, the default template file for **UNK**.
+
+Both scripts are 250 bytes each, for a total of 500 bytes.
+The default template file takes up the remaining 500 bytes
+of the target 1000 bytes.
+You are, of course, free to make the template file as large
+and involved as you like.
+
+# DETAILS
+
+## UNK
+
+**UNK** takes a set of files in a directory, applies a template to them,
+and output them into another directory as HTML files ready for a server.
+To keep a very small size, **UNK** delegates most file processing to **TM**,
+the main template.  It delegates by using an idea found in
+[shab](https://github.com/zimbatm/shab):
+each input file is read as a `heredoc`, which enables
+shell interpolation.
+So the template, as opposed to the engine,
+can do all the heavy-lifting of index generation and navigation and such.
+That means all the
+
+Content goes into the following (hard-coded) directories:
+
+- **I/**, for written (*__i__nput*) content (the pages of the site),
+- **S/**, for ***s***tatic content (css, images, etc.), &
+- **O/**, for the (*__o__utput*) website, ready for `rsync`ing
+          to a server.
+
+If there is no **TM** in the directory where **UNK** is run,
+one will be created that will simply echo the file being processed.
+
+The following variables are made available to **TM**:
+
+- **FN**: the *FileName* (with directories removed)
+  of the file being processed
+- **TT**: the *TiTle* (the first line) of the file
+- **BD**: the *BoDy* (the rest) of the file
+
+as well as this function:
+
+- **X**, for *eXpand*: the `shab` stand-in.
+  It is much simpler than `shab`, and will fail if the template
+  (or if it nests templates, one of the nested ones)
+  has a `ZZ` on a line by itself, due to its `heredoc` nature.
+
+and these aliases (though they're more an artefact of saving space
+in the script, but they can be used in templates):
+
+- **c**: `cat`
+- **q**: `test`
+- **e**: `echo`
+
+As mentioned above, templates can be nested.
+Simply call another template from **TM** with the **X** function.
+
+## LHT
+
+**LHT** stands for *Less HyperText*,
+because that's what you're writing when you're writing it
+(though not much less than HTML).
+Basically,
+blank lines are interpreted as `<p>` tag breaks,
+unless the previous source paragraph started with `<` and ended with `>`.
+It also has support for three inline spans:
+
+- `*em*` or `_em_` as *em*
+- `**strong**` or `__strong__` as **strong**
+- `\`code\`` as `code`.
+
+Everything else is just HTML.
+
+**LHT** was inspired, in part, by
+[Writing HTML in HTML](http://john.ankarstrom.se/html) by John Ankarstrom,
+as well as some other articles I can't think of right now.
+I liked the idea, but some tags in HTML are just annoying to write
+over and over, and take me out of the flow of writing prose.
+So I fixed those few tags.
+**The inline tags are definitely subject to change.**
+
+# Why?
+
+I was bored and decided I'd try to write a static site generator
+that could fit in a [toot] (500 characters).
+I [wrote][1] [a few][2] [of them][3],
+making them smaller and smaller each time.
+By the end, I was left with a *tiny* script
+that delegated almost *all* the work to the template file.
+That script became **UNK** in this repo.
+
+[toot]: https://writing.exchange/web/statuses/102333562361891512
+[1]: https://writing.exchange/web/statuses/102334522981990897
+[2]: https://writing.exchange/web/statuses/102334522981990897
+[3]: https://writing.exchange/web/statuses/102339851501562648
+
+I was feeling pretty high on my horse after writing the tiny SSG,
+so I thought,
+*[maybe I could try for a tootable Markdown converter next][4]* --
+boy, was I wrong about that.
+Markdown is *way* too complicated to fit in 500 bytes.
+So I just wrote the Really Important Parts: `<p>` and some inlines.
+
+[4]: https://writing.exchange/@acdw/102339290120562386
+
+# LEGAL
+
+Copyright &copy; 2019 Case Duckworth <acdw@acdw.net>
+This work is free.
+You can redistribute it and/or modify it under the terms of
+the Do What The Fuck You Want To Public License, Version 2,
+as published by Sam Hocevar.
+See the LICENSE file for more details.
+
+## Why this license?
+
+I was going to go with a stricter license like the GPL,
+but realized that
+
+1. this software isn't so important or time-consuming that I need
+   others to credit me or redistribute the project under the same terms, and
+2. the GPL is *way* too long for a project like this.
+   It's over 35 times *bigger* than the entirety of this project,
+   not counting the content or this README.
+   It would weigh down the entire undertaking.
+   The WTFPL, by contrast, is a trim 443 characters,
+   which is right in keeping with the smallness of this project.
-- 
cgit 1.4.1-21-gabe81