10 changed files with 498 additions and 32 deletions
@ -0,0 +1 @@ |
|||
https://github.com/neil-edelman/MakeIndex |
@ -0,0 +1 @@ |
|||
The source repository is on <em>GitHub</em>. |
@ -0,0 +1,248 @@ |
|||
<!doctype html public "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> |
|||
|
|||
<html> |
|||
|
|||
<head> |
|||
<!-- steal these colour values from JavaDocs; meh --> |
|||
<style type = "text/css"> |
|||
a:link, a:visited { color: #4a6782; } |
|||
a:hover, a:focus { color: #bb7a2a; } |
|||
a:active { color: #4A6782; } |
|||
tr:nth-child(even) { background: #dee3e9; } |
|||
div { |
|||
margin: 4px 0; |
|||
padding: 0 4px 4px 4px; |
|||
} |
|||
table { width: 100%; } |
|||
td { padding: 4px; } |
|||
h3, h1 { |
|||
color: #2c4557; |
|||
background-color: #dee3e9; |
|||
padding: 4px; |
|||
} |
|||
h3 { |
|||
margin: 0 -4px; |
|||
padding: 4px; |
|||
} |
|||
</style> |
|||
<title>Parser</title> |
|||
</head> |
|||
|
|||
|
|||
<body> |
|||
|
|||
<h1>Parser</h1> |
|||
|
|||
<ul> |
|||
<li><a href = "#_declarations">Declarations</a></li> |
|||
<li><a href = "#_summary">Function Summary</a></li> |
|||
<li><a href = "#_detail">Function Detail</a></li> |
|||
</ul> |
|||
|
|||
<p> |
|||
Copyright 2008, 2012 Neil Edelman, distributed under the terms of the |
|||
GNU General Public License, see copying.txt |
|||
</p> |
|||
<p> |
|||
Parsing of strings. '~' on a line by itself is recognised in ".newsfile.rss" |
|||
and ".sitemap.xml" as a <head>~<body>~<tail>; there should be two of them. |
|||
</p> |
|||
<p> |
|||
Parsed in ".index.html", |
|||
</p> |
|||
<ul> |
|||
<li> |
|||
@(content) prints <em>content.d</em>, or, if it is missing, <em>index.d</em>; |
|||
</li> |
|||
<li> |
|||
@(files){} repeats for all the files in the directory the contents of the |
|||
argument; |
|||
</li> |
|||
<li> |
|||
@(htmlcontent); |
|||
</li> |
|||
<li> |
|||
@(pwd){} prints the directory, the argument is the separator; |
|||
eg, @(pwd){/}; |
|||
</li> |
|||
<li> |
|||
@(root){}, like @(pwd), except up instead of down; |
|||
</li> |
|||
<li> |
|||
@(now) prints the date and the time in UTC. |
|||
</li> |
|||
</ul> |
|||
<p> |
|||
Further parsed in @(files)<em></em> in ".index.html", |
|||
</p> |
|||
<ul> |
|||
<li> |
|||
@(filealt) prints Dir or File; |
|||
</li> |
|||
<li> |
|||
@(filedesc); |
|||
</li> |
|||
<li> |
|||
@(filehref) prints the filename or the <em>.link</em>; |
|||
</li> |
|||
<li> |
|||
@(fileicon) prints it's <em>.d.jpeg</em>, or if it is not there, <em>dir.jpeg</em> or |
|||
<em>file.jpeg</em>; |
|||
</li> |
|||
<li> |
|||
@(filename) prints the file name; |
|||
</li> |
|||
<li> |
|||
@(filesize) prints the file size, if it exits; |
|||
</li> |
|||
<li> |
|||
@(now) prints the date and the time in UTC. |
|||
</li> |
|||
</ul> |
|||
<p> |
|||
Parsed in ".newsfeed.rss", |
|||
</p> |
|||
<ul> |
|||
<li> |
|||
@(date) prints the date on the news file; |
|||
</li> |
|||
<li> |
|||
@(news) prints the contents of the file (as a text file); |
|||
</li> |
|||
<li> |
|||
@(newsname) prints the filename of the news story; |
|||
</li> |
|||
<li> |
|||
@(now) prints the date and the time in UTC; |
|||
</li> |
|||
<li> |
|||
@(title) prints the second line in the <em>.news</em>. |
|||
</li> |
|||
</ul> |
|||
<dl> |
|||
<dt>minimum standard</dt> |
|||
<dd>C89/90</dd> |
|||
<dt>author</dt> |
|||
<dd>Neil</dd> |
|||
<dt>version</dt> |
|||
<dd>1.1; 2017-03 fixed pedantic warnings; command-line improvements</dd> |
|||
<dt>since</dt> |
|||
<dd>0.6; 2008-03-21</dd> |
|||
</dl> |
|||
|
|||
|
|||
<a name = "_declarations"><!-- --></a><h2>Declarations</h2> |
|||
|
|||
<div><a name = "struct Parser"><!-- --></a> |
|||
<h3>struct Parser</h3> |
|||
<pre><b>struct Parser</b></pre> |
|||
<p> |
|||
See <a href = "#Parser">Parser</a>. |
|||
</p> |
|||
<dl> |
|||
</dl> |
|||
</div> |
|||
|
|||
<div><a name = "struct Files"><!-- --></a> |
|||
<h3>struct Files</h3> |
|||
<pre><b>struct Files</b></pre> |
|||
<p> |
|||
Dependancy on <em>Files</em>. |
|||
</p> |
|||
<dl> |
|||
</dl> |
|||
</div> |
|||
|
|||
<div><a name = "typedef int (*ParserWidget)(struct Files *const files, FILE *const fp)"><!-- --></a> |
|||
<h3>typedef int (*ParserWidget)(struct Files *const files, FILE *const fp)</h3> |
|||
<pre><b>typedef int (*ParserWidget)(struct Files *const files, FILE *const fp)</b></pre> |
|||
<p> |
|||
All <em>ParserWidget</em>s are in <em>Widget.c</em>. |
|||
</p> |
|||
<dl> |
|||
</dl> |
|||
</div> |
|||
|
|||
|
|||
<a name = "_summary"><!-- --></a><h2>Function Summary</h2> |
|||
|
|||
<table> |
|||
<tr><th>Return Type</th><th>Function Name</th><th>Argument List</th></tr> |
|||
<tr> |
|||
<td>struct Parser *</td> |
|||
<td><a href = "#Parser">Parser</a></td> |
|||
<td>char *const str</td> |
|||
</tr> |
|||
<tr> |
|||
<td>void</td> |
|||
<td><a href = "#Parser_">Parser_</a></td> |
|||
<td>struct Parser **const p_ptr</td> |
|||
</tr> |
|||
<tr> |
|||
<td>void</td> |
|||
<td><a href = "#ParserRewind">ParserRewind</a></td> |
|||
<td>struct Parser *p</td> |
|||
</tr> |
|||
<tr> |
|||
<td>int</td> |
|||
<td><a href = "#ParserParse">ParserParse</a></td> |
|||
<td>struct Parser *p, struct Files *const f, int invisible, |
|||
FILE *fp</td> |
|||
</tr> |
|||
</table> |
|||
|
|||
|
|||
<a name = "_detail"><!-- --></a><h2>Function Detail</h2> |
|||
|
|||
<div><a name = "Parser"><!-- --></a> |
|||
<h3>Parser</h3> |
|||
<pre>struct Parser * <b>Parser</b> (char *const str)</pre> |
|||
<dl> |
|||
<dt>return</dt> |
|||
<dd>Creates a parser for the string, <em>str</em>.</dd> |
|||
</dl> |
|||
</div> |
|||
|
|||
<div><a name = "Parser_"><!-- --></a> |
|||
<h3>Parser_</h3> |
|||
<pre>void <b>Parser_</b> (struct Parser **const p_ptr)</pre> |
|||
<dl> |
|||
<dt>parameter: p_ptr</dt> |
|||
<dd>A pointer to the <em>Parser</em> that's to be destucted.</dd> |
|||
</dl> |
|||
</div> |
|||
|
|||
<div><a name = "ParserRewind"><!-- --></a> |
|||
<h3>ParserRewind</h3> |
|||
<pre>void <b>ParserRewind</b> (struct Parser *p)</pre> |
|||
<p> |
|||
Resets the parser, <em>p</em>. |
|||
</p> |
|||
<dl> |
|||
</dl> |
|||
</div> |
|||
|
|||
<div><a name = "ParserParse"><!-- --></a> |
|||
<h3>ParserParse</h3> |
|||
<pre>int <b>ParserParse</b> (struct Parser *p, struct Files *const f, int invisible, |
|||
FILE *fp)</pre> |
|||
<p> |
|||
Parse, called recursively. |
|||
</p> |
|||
<dl> |
|||
<dt>parameter: f</dt> |
|||
<dd>Called in the handler to <em>ParserWidget</em>s.</dd> |
|||
<dt>parameter: invisible</dt> |
|||
<dd>No output.</dd> |
|||
<dt>parameter: fp</dt> |
|||
<dd>Output.</dd> |
|||
<dt>fixme</dt> |
|||
<dd>This fn needs rewriting; messy.</dd> |
|||
<dt>fixme</dt> |
|||
<dd>Invisible, hack.</dd> |
|||
</dl> |
|||
</div> |
|||
|
|||
|
|||
</body> |
|||
</html> |
@ -0,0 +1,2 @@ |
|||
Auto-generated file that tells you how to do a <em>.index.html</em>, |
|||
<em>etc</em>. |
@ -0,0 +1,201 @@ |
|||
<!doctype html public "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd"> |
|||
|
|||
<html> |
|||
|
|||
<head> |
|||
<!-- steal these colour values from JavaDocs; meh --> |
|||
<style type = "text/css"> |
|||
a:link, a:visited { color: #4a6782; } |
|||
a:hover, a:focus { color: #bb7a2a; } |
|||
a:active { color: #4A6782; } |
|||
tr:nth-child(even) { background: #dee3e9; } |
|||
div { |
|||
margin: 4px 0; |
|||
padding: 0 4px 4px 4px; |
|||
} |
|||
table { width: 100%; } |
|||
td { padding: 4px; } |
|||
h3, h1 { |
|||
color: #2c4557; |
|||
background-color: #dee3e9; |
|||
padding: 4px; |
|||
} |
|||
h3 { |
|||
margin: 0 -4px; |
|||
padding: 4px; |
|||
} |
|||
</style> |
|||
<title>Recursor</title> |
|||
</head> |
|||
|
|||
|
|||
<body> |
|||
|
|||
<h1>Recursor</h1> |
|||
|
|||
<ul> |
|||
<li><a href = "#_declarations">Declarations</a></li> |
|||
<li><a href = "#_summary">Function Summary</a></li> |
|||
<li><a href = "#_detail">Function Detail</a></li> |
|||
</ul> |
|||
|
|||
<p> |
|||
Copyright 2008, 2012 Neil Edelman, distributed under the terms of the |
|||
GNU General Public License, see copying.txt |
|||
</p> |
|||
<p> |
|||
<em>Recursor</em> is the main part of <em>MakeIndex</em>, a content management system that |
|||
generates static content, (mostly index.html,) on all the directories rooted |
|||
at the directory specified by <em>--directory</em> or <em>-d</em>. It is based on a template |
|||
file, <em>.index.html</em> and <em>.newsfeed.rss</em>, which are changeable. Also included |
|||
are files to summarise the directory structure for a <em>xml</em> site map, |
|||
compatible with Google, and any <em>.news</em> for an <em>rss</em> feed. |
|||
</p> |
|||
<p> |
|||
There should be an <example> directory that has a bunch of files in it. Run |
|||
<em>bin/MakeIndex -d example/</em>; it should make a webpage out of the directory |
|||
structure and <em>.index.html</em>, open <em>example/index.html</em> after running to see. |
|||
</p> |
|||
<ul> |
|||
<li> |
|||
If the <em>.index.html</em> file exists in the <directory>, prints <index.html> |
|||
recursively; overwrites any <em>index.html</em> on all the directories rooted at |
|||
<directory>; |
|||
</li> |
|||
<li> |
|||
if the <em>.sitemap.xml</em> file exists in <directory>, prints (and overwrites) an |
|||
index called <em>sitemap.xml</em>; |
|||
</li> |
|||
<li> |
|||
if the <em>.newsfeed.rss</em> file exists in <directory>, prints (and overwrites) |
|||
to <em>newsfeed.rss</em> all the <em>.news</em> files (if there are any.) |
|||
</li> |
|||
</ul> |
|||
<ul> |
|||
<li> |
|||
Treats <em>.d</em> as a description of the file without the <em>.d</em>; |
|||
if this is an empty text-file or a zero-byte file, it skips over this file. |
|||
</li> |
|||
<li> |
|||
treats <em>index.d</em> as a description of the directory; |
|||
</li> |
|||
<li> |
|||
treats <em>content.d</em> as an in-depth description of the directory, |
|||
replacing <index.d> when in the directory; |
|||
</li> |
|||
<li> |
|||
treats <em>.d.jpg</em> as a image that will go with the description; |
|||
</li> |
|||
<li> |
|||
treats <em>.news</em> as a newsworthy item; the format of this file is ISO 8601 |
|||
date (YYYY-MM-DD,) next line title; |
|||
</li> |
|||
<li> |
|||
treats <em>.link</em> as a link with the href in the file. |
|||
</li> |
|||
</ul> |
|||
<p> |
|||
<em>.index.html</em>, <em>.sitemap.xml</em>, <em>.newsfeed.rss</em>, see <em>Parser</em> for recognised |
|||
symbols. Assumes '..' is the parent directory, '.' is the current directory, |
|||
and '/' is the directory separator; works for UNIX, MacOS, and Windows. If |
|||
this is not the case, the constants are in <em>Files.c</em>. |
|||
</p> |
|||
<dl> |
|||
<dt>minimum standard</dt> |
|||
<dd>POSIX.1</dd> |
|||
<dt>author</dt> |
|||
<dd>Neil</dd> |
|||
<dt>version</dt> |
|||
<dd>2018-03 Removed version numbers.</dd> |
|||
<dt>since</dt> |
|||
<dd>1.1; 2017-03 Fixed pedantic warnings; command-line improvements. |
|||
1.0; 2016-09-19 Added umask. |
|||
0.8; 2013-07 Case-insensitive sort. |
|||
0.7; 2012 <em>sth.dsth.d</em> handled properly. |
|||
0.6; 2008-03-27 Made something out of an earlier work.</dd> |
|||
<dt>fixme</dt> |
|||
<dd>Don't have <directory> be an argument; just do it in the current.</dd> |
|||
<dt>fixme</dt> |
|||
<dd>Borrow <em>Cdoc</em> parser for the <em>.d</em> files.</dd> |
|||
<dt>fixme</dt> |
|||
<dd>Encoding is an issue; especially the newsfeed, which requires 7-bit.</dd> |
|||
<dt>fixme</dt> |
|||
<dd>It's not robust; eg @(files)<em>@(files){Don't do this.}</em>.</dd> |
|||
<dt>fixme</dt> |
|||
<dd>Simplify the command line arguments.</dd> |
|||
</dl> |
|||
|
|||
|
|||
<a name = "_declarations"><!-- --></a><h2>Declarations</h2> |
|||
|
|||
<div><a name = "struct Recursor"><!-- --></a> |
|||
<h3>struct Recursor</h3> |
|||
<pre><b>struct Recursor</b></pre> |
|||
<p> |
|||
See <a href = "#Recursor">Recursor</a>. |
|||
</p> |
|||
<dl> |
|||
</dl> |
|||
</div> |
|||
|
|||
|
|||
<a name = "_summary"><!-- --></a><h2>Function Summary</h2> |
|||
|
|||
<table> |
|||
<tr><th>Return Type</th><th>Function Name</th><th>Argument List</th></tr> |
|||
<tr> |
|||
<td>struct Recursor *</td> |
|||
<td><a href = "#Recursor">Recursor</a></td> |
|||
<td>const char *idx, const char *map, const char *news</td> |
|||
</tr> |
|||
<tr> |
|||
<td>void</td> |
|||
<td><a href = "#Recursor_">Recursor_</a></td> |
|||
<td>void</td> |
|||
</tr> |
|||
<tr> |
|||
<td>int</td> |
|||
<td><a href = "#RecursorGo">RecursorGo</a></td> |
|||
<td>void</td> |
|||
</tr> |
|||
</table> |
|||
|
|||
|
|||
<a name = "_detail"><!-- --></a><h2>Function Detail</h2> |
|||
|
|||
<div><a name = "Recursor"><!-- --></a> |
|||
<h3>Recursor</h3> |
|||
<pre>struct Recursor * <b>Recursor</b> (const char *idx, const char *map, const char *news)</pre> |
|||
<dl> |
|||
<dt>parameter: idx</dt> |
|||
<dd>file name of the prototype index file, eg, ".index.html".</dd> |
|||
<dt>parameter: map</dt> |
|||
<dd>file name of the prototype map file, eg, ".sitmap.xml".</dd> |
|||
<dt>parameter: news</dt> |
|||
<dd>file name of the prototype news file, eg, ".newsfeed.rss".</dd> |
|||
</dl> |
|||
</div> |
|||
|
|||
<div><a name = "Recursor_"><!-- --></a> |
|||
<h3>Recursor_</h3> |
|||
<pre>void <b>Recursor_</b> (void)</pre> |
|||
<p> |
|||
Destructor. |
|||
</p> |
|||
<dl> |
|||
</dl> |
|||
</div> |
|||
|
|||
<div><a name = "RecursorGo"><!-- --></a> |
|||
<h3>RecursorGo</h3> |
|||
<pre>int <b>RecursorGo</b> (void)</pre> |
|||
<p> |
|||
Actually does the recursion. |
|||
</p> |
|||
<dl> |
|||
</dl> |
|||
</div> |
|||
|
|||
|
|||
</body> |
|||
</html> |
@ -0,0 +1 @@ |
|||
Auto-generated documentation for the main programme. |
@ -0,0 +1,7 @@ |
|||
MakeIndex is a content management system that generates static |
|||
content. Notably, I use it to make this page. It does some other |
|||
stuff, too, like summarise the directory structure in an <em>xml</em> |
|||
site map that is compatible with Google, and any <em>.news</em> in |
|||
an <em>rss</em> feed. The source code is <em>POSIX.1</em>, so in |
|||
Windows, one needs to compile it with <em>DJGPP</em>, <em>MinGW</em>, |
|||
<em>etc</em>, and probably not <em>MSVC</em>. |
@ -0,0 +1 @@ |
|||
Static content management system. |
Loading…
Reference in new issue