Static content management system for mirroring directory structure on the web.
doc | ||
example | ||
src | ||
web | ||
copying.txt | ||
gpl.txt | ||
Makefile | ||
readme.txt |
Copyright (C) 2008, 2012, 2013 Neil Edelman, see copying.txt. neil dot edelman each mail dot mcgill dot ca Version 0.9. Usage: MakeIndex <directory> MakeIndex is a static compiler that generates content (index.html, mostly) on all the directories rooted at the directory specified by the argument, <directory>, based on a template file in <directory>. Also included are files to summarise the directory structure for a xml site map and any news for an rss feed. There should be an <example> directory that has a bunch of files in it. Run <./MakeIndex example/> (from the command line;) it should make a webpage out of the directory structure and <.index.html>, open example/index.html after running to see. * If the <.index.html> file exists in the <directory>, prints <index.html> recursively; overwrites any index.html on all the directories rooted at <directory>. * If the <.sitemap.xml> file exists in <directory>, prints (and overwrites) an index called <sitemap.xml>. * If the <.newsfeed.rss> file exists in <directory>, prints (and overwrites) to <newsfeed.rss> all the <.news> files (if there are any.) * Treats <.d> as a description of the file without the <.d>. If this is an empty text-file or a zero-byte file, it skips over this file. * Treats <index.d> as a description of the directory. * Treats <content.d> as an in-depth description of the directory, replacing <index.d> when in the directory. * Treats <.d.jpg> as a image that will go with the description. * Treats <.news> as a newsworthy item; ISO 8601 date (YYYY-MM-DD,) next line title. * Treats <.link> as a link with the href in the file. <.index.html>, <.sitemap.xml>, <.newsfeed.rss> recognised symbols, * @(now) - prints the date and the time in UTC; * @(date) - prints the date on the news file; * @(title) - prints the second line in the .news; * @(content) - prints content.d, or if it is missing, index.d; * @(files){} - (only in index) repeats for all the files in the directory, * @(filealt) - prints Dir or File; * @(filehref) - prints the filename or the .link; * @(fileicon) - prints .d.jpeg, root dir.jpeg, or file.jpeg; * @(filename) - prints the file name; * @(filesize) - prints the file size, if it exits; * @(news) - prints the contents of the file (as a text file;) * @(newsname) - prints the filename of the news story; * @(pwd){} - (only in index) prints the directory, the argument is the separator; eg, @(pwd){/}; * @(root){} - (only in index) prints ..<argument> all the way up to the root; eg, @root{/}. * ~ on a line by itself is recognised in .newsfile.rss and .sitemap.xml as a <head>~<body>~<tail>, there should be two of them. I use this for my webpage, but I have a Christmas wish list that will probably never get done, eg, * I would really like to have a subset of LaTeX converted into html for the .d files; * encoding is an issue, especially the newsfeed (which I believe needs to be 7bit;) I need to build a unicode-to-html converter; * it's not robust; eg @(files){@(files){Don't do this.}}. If you downloaded the source and have GCC, type <make>; otherwise you're on your own. It should be entirely POSIX compatible. Assumes .. is the parent directory, . is the current directory, and / is the directory separator; works for UNIX, MacOS, Windows. If this is not the case, the constants are in Files.c. Changes 0.7 -- 0.8 Okay, strcasecmp instead of strcmp to sort (case-insensitive sort.) 0.6 -- 0.7 Fixed bug: <something>.d<something>.d used to show up in the page because the first d<something> said "I do want to show in the list" without checking the second.