[muffet source] - last update : Jan 12 2025
[example slov db] - last update : who cares? (format doesn't change)
a static site generator with aspirations to web crawler
Muffet builds a large avl tree which contains many avl trees linking every which way which allows for non-directed graph walks, as well as hierachical views. The easiest way to visit every node is a walk from host to children, and this is done several times during the creation of the tree.
Unlike [slov] muffet assumes there is a schema key value pairs, HOST, BREF, TYPE are used as they were in oscean, lists LINK and BODY also follow the same pattern. An additional list TAGS is a list of internal references to create additional hubs. Previously we had a tag line with several links like this.
TAGS:[fear][homestuck][black][mind][documentation]
which was increadibly clunky to manage. The new way is nicer all around.
Muffet gracefully handles nodes in slov which do not follow this schema, or partially follow it, they will simply not be traversable from the main tree after generation.
to build simply run mk.
to install run mk install.
create directorys /lib/muffet/gemini /lib/muffet/html
to execute first ensure slov is running and populated then use : muffet > out
where 'out' is the flat rendering of the site.
The gemini files will be placed in /lib/muffet/gemini with .gmi extention. Html files are placed in /lib/muffet/html with the .html extention.
It is possible to configure different output paths by changing a global string.
If there are any nodes with TYPE text and there is a filename in cannonical form (lowercase and spaces swapped with _) in /lib/muffet/media/txt then that file's contents will be read into the body of the matching node. Similarly, if there is a matching cannonname.png in /lib/muffet/media/bg that will be used as the background image for the generated page. In the future TYPE html should read in the document for matching files in /lib/muffet/media/html and /lib/muffet/media/gemini, however I have yet no desire to add this feature set. Feel free to abuse plan9 binding to build the namespace to work with your http server.
Current everyday use of muffet has become streamlined through the use of few helper scripts [updatesite], [updategemini], and [feeder]
If for some reason someone decides to use this and has further questions let me know and [I'll] try to help
Muffet will also generate [RSS] and [Atom] feeds as well as format a gemini [feed] compatible with gemini style subscription.