This commit is contained in:
Case Duckworth 2021-01-30 23:47:05 -06:00
commit a6f4a16486
10 changed files with 320 additions and 0 deletions

2
.gitignore vendored Normal file
View File

@ -0,0 +1,2 @@
L
O/

49
I/carpe-diem.html.lh Normal file
View File

@ -0,0 +1,49 @@
Carpe diem
Fusce tortor quam, egestas in posuere quis, porttitor vel turpis. Donec
vulputate porttitor augue at rhoncus. Proin iaculis consectetur sagittis.
Curabitur venenatis turpis sit amet purus tristique nec posuere risus laoreet.
Nullam nisi sem, dapibus id semper id, egestas vel arcu. Morbi porttitor ipsum
placerat erat consequat sed consequat purus feugiat. Donec auctor elit ut
risus mattis facilisis. Lorem ipsum dolor sit amet, consectetur adipiscing
elit.
Proin vulputate sapien facilisis leo ornare pulvinar. Fusce tempus massa a
risus semper iaculis. Suspendisse sollicitudin posuere nunc, sit amet rutrum
leo facilisis mattis. Sed ornare auctor dui, vitae rutrum neque auctor sit
amet. Proin ac dui magna. Mauris vehicula interdum augue, nec ultrices libero
egestas quis. Nunc convallis euismod ipsum, id sollicitudin orci consequat ac.
Fusce bibendum congue libero, in rutrum nulla congue non. Cras sit amet risus
tortor, eu pellentesque dui. Phasellus euismod enim non nibh sodales quis
consectetur lorem laoreet. Vivamus a egestas quam. Curabitur in tortor augue,
vitae varius tellus. Integer varius, elit ac gravida suscipit, eros erat
pellentesque nisi, et tristique augue odio id nulla. Aliquam sit amet nunc vel
tellus hendrerit tempus ac vel sem.
Aenean tincidunt sollicitudin sapien ut porttitor. Curabitur molestie
adipiscing lorem vel scelerisque. Donec vitae interdum est. Proin rutrum
vulputate faucibus. Suspendisse sit amet felis odio, non volutpat ante. Sed eu
lectus quam. Curabitur tristique rhoncus est, vel commodo tortor suscipit
semper. Maecenas feugiat vestibulum nisi id facilisis. Nulla non tincidunt
libero. Praesent ultrices interdum commodo. Sed euismod nisl auctor leo
ultrices rutrum. Aliquam nibh felis, congue molestie blandit at, bibendum at
eros. Aenean tincidunt, tortor iaculis placerat sollicitudin, lorem justo
tempor diam, et posuere sapien leo et magna. Quisque vel aliquam mauris.
Proin varius tempus fermentum. Cum sociis natoque penatibus et magnis dis
parturient montes, nascetur ridiculus mus. Sed tincidunt nunc id magna
adipiscing non sollicitudin turpis tempor. Etiam vel elit ipsum, quis euismod
velit. Quisque elementum magna vitae quam venenatis lacinia. Sed at arcu
ipsum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per
inceptos himenaeos. Donec ut lorem ac sapien cursus lacinia sit amet mollis
dolor. Vivamus tempus odio nec magna faucibus sed hendrerit lorem tempor.
Vestibulum eu nisi arcu. Curabitur nisi risus, fermentum ut lacinia ut,
interdum nec magna. Nunc aliquet gravida massa, eu aliquam lorem faucibus at.
Sed sollicitudin volutpat velit id tempor. In nibh justo, pharetra et pretium
dignissim, tempus in turpis. Phasellus eget lobortis nisl. Phasellus sed
fermentum diam. Nam tempus pharetra odio, quis congue eros imperdiet eu.
Aliquam dui eros, hendrerit et vulputate vel, porta eu eros. Nullam nisi dui,
commodo eget pharetra ut, ornare sit amet nunc. Fusce vel neque urna. Maecenas
nulla ante, egestas at consequat quis, fermentum a enim. Aliquam id tristique
urna. Integer augue justo, scelerisque et consectetur id, rhoncus eget enim.

1
I/index.html.lh Symbolic link
View File

@ -0,0 +1 @@
../README.md

44
I/rosa-rosa-rosam.html.lh Normal file
View File

@ -0,0 +1,44 @@
Rosa Rosa Rosam
Suspendisse pharetra ullamcorper sem et auctor. Suspendisse vitae tellus eu
turpis dignissim gravida ut ut tortor. Cum sociis natoque penatibus et magnis
dis parturient montes, nascetur ridiculus mus. Morbi aliquam sapien quis nisl
sodales non aliquet nisl iaculis. Curabitur fermentum orci vel sapien
pellentesque id condimentum metus vehicula. Curabitur turpis purus,
scelerisque at interdum quis, placerat sit amet tortor. Aliquam erat volutpat.
Integer posuere felis non arcu suscipit ullamcorper. Nam tempus risus
venenatis orci sagittis eu aliquam ante tincidunt. Aenean vehicula ipsum id
sapien tincidunt commodo. Aliquam erat volutpat. Curabitur vehicula libero ac
turpis cursus consectetur. Praesent posuere egestas purus et dapibus. Mauris
egestas, lectus vitae scelerisque ultricies, metus lorem tempor nisi, sed
vehicula tortor mauris nec urna. Quisque urna tellus, facilisis at mollis
eget, adipiscing in nisl. Proin quam arcu, euismod et imperdiet sed, ultricies
sed orci.
Nulla malesuada sem eget lectus scelerisque nec rhoncus metus interdum. In dui
felis, rhoncus id scelerisque eget, vulputate id sem. Nulla facilisi.
Vestibulum eleifend, metus dignissim lacinia ornare, magna nulla vehicula
nisi, sed molestie mauris ipsum vel turpis. Class aptent taciti sociosqu ad
litora torquent per conubia nostra, per inceptos himenaeos. Nulla urna leo,
vehicula eget dignissim a, hendrerit ut risus. Fusce ultricies elementum
placerat. Nam at dolor sed nisi mollis sollicitudin vitae at urna. Vestibulum
iaculis adipiscing eros et mollis.
Phasellus ultricies elit eu risus sagittis eu dictum ante ultrices. Nulla
congue, augue ac placerat tempor, orci mi luctus nisi, at varius ipsum sem sed
eros. Vivamus eget velit eget felis posuere ornare. In sed metus non est
iaculis facilisis dapibus sit amet enim. Aliquam viverra tortor eget neque
volutpat in auctor urna rutrum. Aliquam ligula augue, congue sit amet rutrum
in, semper vel nulla. Sed tempus porttitor faucibus. Donec cursus sodales
nulla, quis lacinia mi vehicula vel. Sed nec purus orci. Nam leo sapien,
rutrum a ultrices quis, placerat vel ligula. Donec massa quam, pellentesque et
molestie nec, hendrerit id mauris. In hac habitasse platea dictumst. Cras quis
quam sem. Curabitur in arcu diam, in interdum mauris.
Proin lorem sapien, iaculis et faucibus nec, dictum sed nunc. Pellentesque in
purus justo. Vestibulum facilisis rutrum nisi, a egestas nunc suscipit sed. Ut
quis tortor a arcu bibendum placerat non sed ante. Praesent orci sem, posuere
sit amet cursus molestie, volutpat ut purus. Curabitur aliquam, purus in
pharetra viverra, lorem leo aliquam tellus, vel consequat felis neque et
mauris. Aliquam erat volutpat.

57
I/spqr.html.lh Normal file
View File

@ -0,0 +1,57 @@
S.P.Q.R.
Mauris in lorem nisl. Maecenas tempus facilisis ante, eget viverra nisl
tincidunt et. Donec turpis lectus, mattis ac malesuada a, accumsan eu libero.
Morbi condimentum, tortor et tincidunt ullamcorper, sem quam pretium nulla, id
convallis lectus libero nec turpis. Proin dapibus nisi id est sodales nec
ultrices tortor pellentesque. Vivamus vel nisi ac lacus sollicitudin vulputate
ac ut ligula. Nullam feugiat risus eget eros gravida in molestie sapien
euismod. Nunc sed hendrerit orci. Nulla mollis consequat lorem ac blandit. Ut
et turpis mauris. Nulla est odio, posuere id ullamcorper sit amet, tincidunt
vel justo. Curabitur placerat tincidunt varius. Nulla vulputate, ipsum eu
consectetur mollis, dui nibh aliquam neque, at ultricies leo ligula et arcu.
Proin et mi eget tellus sodales lobortis. Sed tempor, urna vel pulvinar
faucibus, lectus urna vehicula ante, at facilisis dolor odio at lorem. Morbi
vehicula euismod urna, et imperdiet urna ornare vitae.
Sed tincidunt sollicitudin ultrices. In hac habitasse platea dictumst. Morbi
ligula lectus, egestas at ultricies nec, fringilla et tellus. Duis urna lorem,
bibendum a ornare sed, euismod sed nunc. Aliquam tempor massa at velit
fringilla fringilla. Praesent sit amet tempor felis. Maecenas id felis ac
velit aliquam tempor a sit amet orci. Nunc placerat nulla pellentesque sem
commodo cursus. Praesent quis sapien orci, quis ultricies augue. Nam
vestibulum sem non augue semper tincidunt pellentesque ipsum volutpat. Duis
congue, nunc a aliquam luctus, quam ante convallis nisi, ac pellentesque lacus
orci vel turpis. Cum sociis natoque penatibus et magnis dis parturient montes,
nascetur ridiculus mus. Suspendisse hendrerit nisl eu felis sagittis faucibus.
Nunc eu congue lorem. Quisque non nibh nisi, et ultrices massa. Sed vitae erat
vitae nulla pellentesque fermentum.
Ut diam nunc, consectetur ut ultrices eu, iaculis sed felis. Sed lacinia, odio
et accumsan luctus, arcu ipsum accumsan erat, sit amet malesuada libero lacus
et velit. Donec accumsan tristique tristique. Proin a metus magna, vitae
mattis nisl. Integer a libero ipsum. Mauris faucibus eleifend metus id
sodales. Morbi ornare, nibh nec facilisis imperdiet, turpis sem commodo lorem,
id commodo mauris metus vitae justo. Etiam at pellentesque tortor. Proin
mollis accumsan ligula, nec tempus augue auctor quis. Nulla lacinia, mi quis
lobortis auctor, nisi diam posuere dui, pulvinar feugiat dui libero eget quam.
Fusce eu risus nunc, a consectetur orci. Class aptent taciti sociosqu ad
litora torquent per conubia nostra, per inceptos himenaeos. Maecenas venenatis
aliquet orci, a ultricies sem facilisis eu. Donec dolor purus, porta
condimentum convallis nec, dignissim nec libero.
Etiam rutrum ultricies dui, et interdum metus elementum et. Nulla sapien nunc,
interdum tristique porttitor in, laoreet vitae mi. Ut vehicula auctor mauris
sit amet bibendum. Phasellus adipiscing mattis libero, eget adipiscing erat
dignissim at. Vivamus convallis malesuada metus nec cursus. Ut cursus, lorem
eleifend sollicitudin condimentum, felis tortor sodales augue, ac tempus lacus
ipsum vitae quam. Vestibulum vitae lacus non tortor vehicula iaculis faucibus
quis massa.
Cum sociis natoque penatibus et magnis dis parturient montes, nascetur
ridiculus mus. Duis malesuada neque nec ante porttitor accumsan. Suspendisse
potenti. Aliquam in lacus magna, imperdiet laoreet lectus. Praesent id diam
nec ante commodo rhoncus nec vel augue. Pellentesque tortor massa, dignissim
ut sagittis sed, hendrerit vitae nunc. Nam gravida, urna vitae hendrerit
rutrum, felis augue vulputate tortor, ut varius velit libero nec lectus. In
adipiscing massa in est scelerisque ullamcorper. Vivamus in nisi metus.

56
I/tu-quoque.html.lh Normal file
View File

@ -0,0 +1,56 @@
Tu quoque
Vestibulum leo turpis, dignissim quis ultrices sit amet, iaculis ac ligula.
Pellentesque tristique, velit eget scelerisque scelerisque, est dolor ultrices
arcu, quis ullamcorper justo arcu luctus mauris. Integer congue molestie nisi
id posuere. Fusce pellentesque gravida tempus. Integer viverra tortor nec eros
mollis quis convallis sem laoreet. Nulla id libero ac erat varius laoreet.
Proin sed est est. Curabitur lacinia fermentum lorem, elementum malesuada
ipsum malesuada ut. Donec suscipit elit id leo vehicula mattis non sed leo.
Morbi varius eleifend varius. Nulla vestibulum, neque vitae aliquam eleifend,
nisi tellus placerat nunc, quis suscipit elit turpis eu tortor. Etiam euismod
convallis lectus quis venenatis. Phasellus laoreet magna in nibh cursus eu
egestas nulla convallis. Aliquam vel ullamcorper risus. Fusce dictum, massa id
consequat viverra, nulla ante tristique est, a faucibus nisi enim nec dui.
Donec metus ligula, condimentum at porttitor eget, lobortis at quam.
Aenean vel libero in magna ultricies congue in a odio. Donec faucibus rutrum
ornare. Fusce dictum eleifend fermentum. Vestibulum vel nibh a metus porttitor
rhoncus. Pellentesque id quam neque, eget molestie arcu. Integer in elit vel
neque viverra ultricies in eget massa. Nam ut convallis est. Pellentesque eros
eros, sodales non vehicula et, tincidunt ut odio. Cras suscipit ultrices metus
sit amet molestie. Fusce enim leo, vehicula sed sodales quis, adipiscing at
ipsum.
Nunc tempor dignissim enim, sed tincidunt eros bibendum quis. Curabitur et
dolor augue, id laoreet mi. Nulla cursus felis id dui vehicula vitae ornare
lorem blandit. Cras eget dui nec odio volutpat pharetra. Fusce hendrerit justo
justo, vel imperdiet enim. Vivamus elit risus, interdum ultrices accumsan
eleifend, vestibulum vitae sapien. Integer bibendum ullamcorper tristique.
Nulla quis odio lectus, quis eleifend augue. Integer a ligula mauris. Aenean
et tempus tortor. Quisque at tortor mi. Vivamus accumsan feugiat est a
blandit. Sed vitae enim ut dolor semper sodales. Duis tristique, ante et
placerat elementum, nulla tellus pellentesque sapien, quis posuere velit mi
eget nulla. Sed vestibulum nunc non est porttitor ut rutrum nibh semper.
Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac
turpis egestas.
Nulla adipiscing ultricies lobortis. Vivamus iaculis nisl vitae tellus laoreet
vitae aliquet lacus mollis. Phasellus ut lacus urna, sed sagittis ante. Etiam
consectetur pretium nisl sed dignissim. Pellentesque convallis, nisl eget
commodo mollis, sem magna consequat arcu, sed pretium ipsum arcu sit amet
neque. Aliquam erat volutpat. Morbi sed mi sed urna vestibulum placerat vitae
vel metus. Fusce ac ante at justo pharetra vehicula. Vivamus vel tortor eget
augue aliquet aliquet at vel odio. Nunc venenatis, magna quis facilisis
fringilla, augue tellus varius neque, in vulputate est eros ut tortor. Duis
lorem neque, aliquam congue posuere id, condimentum non dui. Phasellus ut dui
massa, porttitor suscipit augue. Praesent quis tellus quam, vel volutpat
metus. Vivamus enim est, aliquam in imperdiet et, sagittis eu ligula.
Vestibulum hendrerit placerat orci et aliquet. Cras pharetra, dolor placerat
lobortis tempor, metus odio cursus ligula, et posuere lacus ligula quis dui.
Donec a lectus eu nibh malesuada aliquam. Proin at metus quam, et tincidunt
leo. Quisque lacus justo, scelerisque sodales pulvinar sed, dignissim ut
sapien. Vivamus diam felis, adipiscing sollicitudin ultricies id, accumsan ac
felis. In eu posuere ligula. Suspendisse potenti. Donec porttitor dictum dui
id vehicula. Integer ante velit, congue id dictum et, adipiscing a tortor.

6
LICENSE Normal file
View File

@ -0,0 +1,6 @@
(c) 2020 Case Duckworth <acdw@acdw.net>
Everyone is permitted to do whatever with this software, without limitation.
This software comes without any warranty whatsoever.
Don't hurt yourself.
Make good choices.

95
README.md Normal file
View File

@ -0,0 +1,95 @@
NEF
an even <i>smaller</i> static site generator
<hr>
from the mind that brought you <b>UNK</b>, comes the new and improved SON OF
UNK, <b>NEF</b>. Where <b>UNK</b> was a bloated <i>one thousand bytes</i>, the
entirety of <b>NEF</b> is <i>four hundred forty-four</i>, over a fifty per cent
<i>reduction</i> in size.
<h2>installation</h2>
clone this repo.
<b>NEF</b> requires a POSIX environment.
<h2>use</h2>
create the following files and directories in the same directory as <b>NEF</b>:
<ul>
<li><b>L</b>, the <i>Layout</i> file, which gets expanded by <b>NEF</b>.
if <b>L</b> isn't provided, a default <b>L</b> will be generated.
<li><b>H</b>, the <i>Html</i> generator, which converts the input files to
HTML. if <b>H</b> isn't provided, a default function H is called, which
is pretty stupid: it wraps blank-line-separated paragraphs in
<code>&lt;p&gt;</code> blocks. otherwise, it's pure HTML (mostly; see
<b>layouts</b>, below).
<li><b>I/</b>, where the <i>Input</i> files, like pages, go.
each page should have a name of the form
<code>NAME.OUT-FMT.IN-FMT</code>, where
<code>NAME</code> is the basename of the file,
<code>OUT-FMT</code> is the output format (usually HTML),
and <code>IN-FMT</code> is the input format (whatever -- in this repo
it's called <code>.h</code>).
<li><b>S/</b>, where the <i>Static</i> files, like CSS and images, go.
</ul>
<h2>layouts</h2>
the <b>L</b> file is basically a big here-doc, meaning that you can write
arbitrary shell in it however you'd like. the following variables and functions
are made available to <b>L</b>'s environment (in addition, of course, to
whatever <b>NEF</b>'s environment is):
<ul>
<li><b>X</b>, the <i>eXpander</i>. it turns <b>L</b> into a here-doc.
<i>make sure to escape your files properly!</i>
<li><b>H</b>, the <i>Htmlizer</i>. it's a dumb awk function. even if you
have a file <b>H</b> in <b>NEF</b>'s directory, this function will
still be here, taunting you with its stupidity.
<li><b>P</b>, aliased to <code>echo</code>.
<li><b>T</b>, aliased to <code>sed q</code>, which pulls the first line from
a file. aka, the <i>Title</i>.
<li><b>\$H</b>, which keeps track of whether you're using the <b>H</b> file
or function. you probably don't need this. but it's here.
<li><b>\$F</b>, the <i>Filename</i> of the current input file.
<li><b>\$N</b>, the <i>baseName</i> (without <code>I/</code>) of the current
input file.
</ul>
the default <b>L</b> <i>also</i> runs each input file through the
<b>X</b> function (<b>UNK</b> devotees will be aware of the <b>X</b> function;
it's basically <a href=https://github.com/zimbatm/shab>shab</a> but stupider and
smaller), meaning that input files can basically function as templates
themselves, and create their own fun.
<h2>uh, yeah, that's it</h2>
look, the script is a super short POSIX shell script. it's barely usable by
itself. you're probably going to throw it out and write something else --
that's what I do.
<h2>legal</h2>
<b>UNK</b> used the <a href="http://www.wtfpl.net/">WTFPL</a>, which is the
shortest license I've been able to find. however, for <b>NEF</b>, 443 bytes is
<i>far</i> too long: it basically <i>doubles</i> the size of the repo! so I
wrote my own license, which I'm calling the <b>good choices license</b>, or
<b>GCL</b> for short. you can read the LICENSE file, or just read it here:
<blockquote>
(c) 2020 Case Duckworth &lt;acdw@acdw.net&gt;
Everyone is permitted to do whatever with this software, without limitation.
This software comes without any warranty whatsoever.
Don't hurt yourself.
Make good choices.
</blockquote>
a trim 169 bytes, exclusive of the copyright information!
<h2>contributing</h2>
uh... send me an email? yeah. do that.

BIN
S/not-this-day.gif Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 MiB

10
nef Executable file
View File

@ -0,0 +1,10 @@
#!/bin/sh
rm -r O;mkdir O;cp -r S O;alias P=echo T=sed\ q
X()(eval "$(P 'cat<<.';cat;P;P .)");H()(awk -F'
' -vRS='' '!/^<.*>$/{$0="<p>"$0"</p>"}{print}')
[ -x H ]&&H=./H||H=H
[ -f L ]||P '<!DOCTYPE html><title>$(T $F)</title>
<style>body{max-width:70ch;padding:1%}</style>
<h1>$(T $F)</h1>$(sed 1d $F|X|$H)<hr>/ $(for P in I/*;do
[ $P = $F ]||(N=${P#I/};P "<a href=./${N%.*}>$(T $P)</a> ")
done)'>L;for F in I/*;do N=${F#I/};X<L>O/${N%.*};done