fix links in 1992/buzzard.2/buzzard.2.README.html

The `1992/buzzard.2/buzzard.2.README.md` has been improved
so that links to files that is referenced are
directed to the proper web pages (web site or GitHub).

Links in `1992/buzzard.2/buzzard.2.README.md` markdown
files have been changed to the generated HTML files.

Changed `bin/gen-other-html.sh` VERSION from to "1.0.4 2024-04-13"
to "1.1 2024-04-20".

By default, we substitute _%%REPO_URL%%_ and _%%SITE_URL%%_
in inc files.

Changed `bin/subst.default.sh` VERSION from to "1.2.3 2024-04-13"
to "1.3 2024-04-20".

All `-s TOKEN=value` substitutions are applied to all markdown files
that are processed by `bin/md2html.sh`.

Substitutions of and **%%TOKEN%%** are performed on included HTML
content, content generated by the ‘before tool’ (-b tool), content
generated by the ‘after tool’ (-a tool), as well as the markdown
content given to the pandoc wrapper tool (-p tool).

It is an error, unless -S is given, for any phase, except HTML phases
20-29, to not substitute all **%%TOKEN%%**'s. For HTML phases 20-29, any
**%%TOKEN%%** that is not substituted are passed thru without substitution.

Update `bin/index.html` to clarify

Changed `bin/md2html.sh` VERSION from to "1.4 2024-04-18"
to "1.5 2024-04-20".

Fix the _BEFORE: 1st line of markdown file_ and _AFTER: last line
of markdown file_ HTML comments so that the true markdown file
source (not some temporary file) is identified.  This prevents
`authors.html`, `location.html` and `years.html` from always changing
due to different temporary files being used on each run.

Run `make www` to perform the above.
This commit is contained in:
Landon Curt Noll committed 2024-04-21 00:04:24 -07:00
1 parent 9b55039fd4
commit c1b0d7de48
11 files changed
+274 -226

No files matched your search

+22 -15
View File
@@ -134,27 +134,34 @@
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<!-- BEFORE: 1st line of markdown file: 1992/buzzard.2/buzzard.2.README.md -->
<p><a href="buzzard.2.README.md">buzzard.2.README.md</a> this file<br />
<a href="buzzard.2.design.md">buzzard.2.design.md</a> description of FIRST (design documentation of THIRD)<br />
<a href="third">third</a> implementation of THIRD in FIRST<br />
<a href="help.th">help.th</a> online listing of THIRD primitives<br />
</p>
<h1 id="useful-files-to-view">Useful files to view</h1>
<ul>
<li><a href="buzzard.2.README.html">buzzard.2.README.html</a> - this file</li>
<li><a href="buzzard.2.design.html">buzzard.2.design.html</a> - description of FIRST (design documentation of THIRD)</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/third">third</a> - implementation of THIRD in FIRST</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/help.th">help.th</a> - online listing of THIRD primitives</li>
</ul>
<h1 id="first-demos">FIRST demos:</h1>
<p>Use <code>./first &lt; &lt;demo&gt;</code>.</p>
<p><a href="demo1.1st">demo1.1st</a> prints Hello World! assuming ASCII</p>
<ul>
<li><a href="demo1.1st">demo1.1st</a> - prints Hello World! assuming ASCII</li>
</ul>
<h1 id="third-demos">THIRD demos:</h1>
<p>Use <code>cat third &lt;demo&gt; | ./first</code>.</p>
<h2 id="demo-files">Demo files:</h2>
<p><a href="demo1.th">demo1.th</a> prints Hello World! regardless of character set
<a href="demo2.th">demo2.th</a> demonstrates a simple loop
<a href="demo3.th">demo3.th</a> demonstrates a simple if test
<a href="demo4.th">demo4.th</a> recursive factorial calculating on the way up
<a href="demo5.th">demo5.th</a> recursive factorial calculating on the way down
<a href="demo6.th">demo6.th</a> demonstrates switching from compiler to execution mode</p>
<ul>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/demo1.th">demo1.th</a> - prints Hello World! regardless of character set</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/demo2.th">demo2.th</a> - demonstrates a simple loop</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/demo3.th">demo3.th</a> - demonstrates a simple if test</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/demo4.th">demo4.th</a> - recursive factorial calculating on the way up</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/demo5.th">demo5.th</a> - recursive factorial calculating on the way down</li>
<li><a href="https://github.com/ioccc-src/temp-test-ioccc/blob/master/1992/buzzard.2/demo6.th">demo6.th</a> - demonstrates switching from compiler to execution mode</li>
</ul>
<h1 id="interactive-third">Interactive THIRD:</h1>
<p>Use <code>cat third - | ./first</code>.</p>
<p>To include the primitive on-line help, use
<code>cat third help.th - | ./first</code>.</p>
<p>Use:</p>
<pre><code>cat third - | ./first</code></pre>
<p>To include the primitive on-line help, use:</p>
<pre><code>cat third help.th - | ./first</code></pre>
<!--
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
+23 -14
View File
@@ -1,14 +1,16 @@
[buzzard.2.README.md](buzzard.2.README.md) this file\
[buzzard.2.design.md](buzzard.2.design.md) description of FIRST (design documentation of THIRD)\
[third](third) implementation of THIRD in FIRST\
[help.th](help.th) online listing of THIRD primitives\
# Useful files to view
- [buzzard.2.README.html](buzzard.2.README.html) - this file
- [buzzard.2.design.html](buzzard.2.design.html) - description of FIRST (design documentation of THIRD)
- [third](%%REPO_URL%%/1992/buzzard.2/third) - implementation of THIRD in FIRST
- [help.th](%%REPO_URL%%/1992/buzzard.2/help.th) - online listing of THIRD primitives
# FIRST demos:
Use `./first < <demo>`.
[demo1.1st](demo1.1st) prints Hello World! assuming ASCII
- [demo1.1st](demo1.1st) - prints Hello World! assuming ASCII
# THIRD demos:
@@ -18,20 +20,27 @@ Use `cat third <demo> | ./first`.
## Demo files:
[demo1.th](demo1.th) prints Hello World! regardless of character set
[demo2.th](demo2.th) demonstrates a simple loop
[demo3.th](demo3.th) demonstrates a simple if test
[demo4.th](demo4.th) recursive factorial calculating on the way up
[demo5.th](demo5.th) recursive factorial calculating on the way down
[demo6.th](demo6.th) demonstrates switching from compiler to execution mode
- [demo1.th](%%REPO_URL%%/1992/buzzard.2/demo1.th) - prints Hello World! regardless of character set
- [demo2.th](%%REPO_URL%%/1992/buzzard.2/demo2.th) - demonstrates a simple loop
- [demo3.th](%%REPO_URL%%/1992/buzzard.2/demo3.th) - demonstrates a simple if test
- [demo4.th](%%REPO_URL%%/1992/buzzard.2/demo4.th) - recursive factorial calculating on the way up
- [demo5.th](%%REPO_URL%%/1992/buzzard.2/demo5.th) - recursive factorial calculating on the way down
- [demo6.th](%%REPO_URL%%/1992/buzzard.2/demo6.th) - demonstrates switching from compiler to execution mode
# Interactive THIRD:
Use `cat third - | ./first`.
Use:
To include the primitive on-line help, use
`cat third help.th - | ./first`.
```
cat third - | ./first
```
To include the primitive on-line help, use:
```
cat third help.th - | ./first
```
<!--
+2 -2
View File
@@ -132,7 +132,7 @@
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<!-- BEFORE: 1st line of markdown file: .gen-authors.sh.13639.entry.md -->
<!-- BEFORE: 1st line of markdown file: authors.md -->
<p style="text-align:center;">
Jump to authors starting with: [
<a href="#A">A</a>  
@@ -2800,7 +2800,7 @@ Location: <a href="location.html#US">US</a> - <em>United States of America</em>
<ul>
<li><a href="2011/zucker/index.html">2011/zucker</a> - Most shiny</li>
</ul>
<!-- AFTER: last line of markdown file: .gen-authors.sh.13639.entry.md -->
<!-- AFTER: last line of markdown file: authors.md -->
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
+84 -68
View File
@@ -19,13 +19,13 @@ Run a command on all winning entries.
For example:
``` <!---sh-->
bin/all-run.sh -v 3 bin/quick-readme2index.sh -v 1
bin/all-run.sh -v 3 bin/quick-readme2index.sh -v 1
```
Or for example:
``` <!---sh-->
bin/all-run.sh -v 3 bin/readme2index.sh -v 1
bin/all-run.sh -v 3 bin/readme2index.sh -v 1
```
@@ -36,19 +36,19 @@ Run a command on all IOCCC years.
For example:
``` <!---sh-->
bin/all-years.sh -v 1 bin/gen-year-index.sh -v 1
bin/all-years.sh -v 1 bin/gen-year-index.sh -v 1
```
Or for example:
``` <!---sh-->
bin/all-years.sh -v 1 bin/chk-entry.sh
bin/all-years.sh -v 1 bin/chk-entry.sh
```
We recommend that this tool be invoked via the top level `Makefile`:
``` <!---sh-->
make verify_entry_files
make verify_entry_files
```
@@ -60,7 +60,7 @@ Check that files required by an entry match the entry's manifest as found in
For example:
``` <!---sh-->
bin/chk-entry.sh 2020/ferguson1
bin/chk-entry.sh 2020/ferguson1
```
@@ -71,7 +71,7 @@ Generate the list of files in the entry's manifest, `.entry.json`.
For example:
``` <!---sh-->
awk -f bin/filelist.entry.json.awk 2020/ferguson1/.entry.json
awk -f bin/filelist.entry.json.awk 2020/ferguson1/.entry.json
```
@@ -82,7 +82,7 @@ Generate the top level `/authors.html` page.
Usage:
``` <!---sh-->
bin/gen-authors.sh -v 1
bin/gen-authors.sh -v 1
```
@@ -93,7 +93,7 @@ Generate the top level `/location.html` page.
Usage:
``` <!---sh-->
bin/gen-location.sh -v 1
bin/gen-location.sh -v 1
```
@@ -105,7 +105,7 @@ files.
Usage:
``` <!---sh-->
bin/gen-other-html.sh -v 1
bin/gen-other-html.sh -v 1
```
@@ -116,13 +116,13 @@ Generate an XML sitemap for the IOCCC web site.
Usage:
``` <!---sh-->
bin/gen-sitemap.sh -v 1
bin/gen-sitemap.sh -v 1
```
We recommend that this tool be invoked via the top level `Makefile`:
``` <!---sh-->
make gen_sitemap
make gen_sitemap
```
@@ -136,31 +136,31 @@ Without argument, the `contest_status` is unchanged.
Usage:
``` <!---sh-->
bin/gen-status.sh -v 1
bin/gen-status.sh -v 1
```
To force the `contest_status` to be closed:
``` <!---sh-->
bin/gen-status.sh -v 1 closed
bin/gen-status.sh -v 1 closed
```
To force the `contest_status` to be open:
``` <!---sh-->
bin/gen-status.sh -v 1 open
bin/gen-status.sh -v 1 open
```
To see other valid statuses:
``` <!---sh-->
bin/gen-status -h
bin/gen-status -h
```
We recommend that this tool be invoked via the top level `Makefile`:
``` <!---sh-->
make gen_status
make gen_status
```
@@ -171,7 +171,7 @@ Generate a number of top level HTML pages for the IOCCC web sites.
Usage:
``` <!---sh-->
bin/gen-top-html.sh -v 1
bin/gen-top-html.sh -v 1
```
Examples of top level HTML pages built by this tool include:
@@ -192,7 +192,7 @@ Examples of top level HTML pages built by this tool include:
We recommend that this tool be invoked via the top level `Makefile`:
``` <!---sh-->
make gen_top_html
make gen_top_html
```
@@ -203,13 +203,13 @@ Generate an `index.html` page for an given IOCCC year.
Usage:
``` <!---sh-->
bin/gen-year-index.sh -v 1 2020
bin/gen-year-index.sh -v 1 2020
```
We recommend that this tool be invoked via the top level `Makefile`:
``` <!---sh-->
make gen_year_index
make gen_year_index
```
@@ -220,13 +220,13 @@ Generate the top level `/years.html` page.
Usage:
``` <!---sh-->
bin/gen-years.sh -v 1
bin/gen-years.sh -v 1
```
We recommend that this tool be invoked via the top level `Makefile`:
``` <!---sh-->
make gen_years
make gen_years
```
@@ -280,7 +280,7 @@ this command will only briefly pause while the
slightly longer [readme2index.sh](readme2index.sh) is run:
``` <!---sh-->
bin/all-run.sh -v 3 bin/quick-readme2index.sh -v 1
bin/all-run.sh -v 3 bin/quick-readme2index.sh -v 1
```
**NOTE**: This command assumes that the relative
@@ -290,7 +290,7 @@ and `index.html` are correct. If in doubt, use:
We recommend that this tool be invoked via the top level `Makefile`:
``` <!---sh-->
make quick_entry_index
make quick_entry_index
```
@@ -299,19 +299,19 @@ make quick_entry_index
Convert an entry README.md into entry directory index.html.
``` <!---sh-->
bin/all-run.sh -v 3 bin/readme2index.sh -v 1
bin/all-run.sh -v 3 bin/readme2index.sh -v 1
```
To build `index.html` files for all entries:
``` <!---sh-->
bin/all-run.sh -v 3 bin/readme2index.sh -v 1
bin/all-run.sh -v 3 bin/readme2index.sh -v 1
```
We recommend that this tool be invoked via the top level `Makefile`:
``` <!---sh-->
make entry_index
make entry_index
```
@@ -342,19 +342,19 @@ Sort a .gitignore in a entry directory.
Usage:
``` <!---sh-->
bin/sort.gitignore.sh -v 1 YYYY/dir
bin/sort.gitignore.sh -v 1 YYYY/dir
```
Suggested usage:
``` <!---sh-->
bin/all-run.sh bin/sort.gitignore.sh -v 1
bin/all-run.sh bin/sort.gitignore.sh -v 1
```
We recommend that this tool be invoked via the top level `Makefile`:
``` <!---sh-->
make sort_gitignore
make sort_gitignore
```
@@ -430,19 +430,19 @@ Untar an entry's a compressed tarball.
Usage:
``` <!---sh-->
bin/untar-entry.sh -v 1 YYYY/dir
bin/untar-entry.sh -v 1 YYYY/dir
```
Suggested usage:
``` <!---sh-->
bin/all-run.sh -v 3 bin/untar-entry.sh -v 1
bin/all-run.sh -v 3 bin/untar-entry.sh -v 1
```
We recommend that this tool be invoked via the top level `Makefile`:
``` <!---sh-->
make untar_entry_tarball
make untar_entry_tarball
```
@@ -453,23 +453,25 @@ Untar an IOCCC year's compressed tarball.
Usage:
``` <!---sh-->
bin/untar-year.sh -v 1 YYYY
bin/untar-year.sh -v 1 YYYY
```
Suggested usage:
``` <!---sh-->
bin/all-years.sh -v 3 bin/untar-year.sh -v 1
bin/all-years.sh -v 3 bin/untar-year.sh -v 1
```
We recommend that this tool be invoked via the top level `Makefile`:
``` <!---sh-->
make untar_year_tarball
make untar_year_tarball
```
# <div id="how">How IOCCC HTML content is built</div>
<div id="how">
# How IOCCC HTML content is built
</div>
The [md2html.sh](md2html.sh) tool is the primary tool that
is used to form all IOCCC related HTML pages for the [official IOCCC web
@@ -489,20 +491,20 @@ built uses, by default, files from the [inc directory](../inc/index.html), of
the file name form:
```
*.default.html
*.default.html
```
By using command line options of the form:
``` <!---sh-->
-H phase=name
-H phase=name
```
where `phase` is the name of an HTML phase,
a non-default file may be used. For example:
``` <!---sh-->
-H navbar=up2index
-H navbar=up2index
```
will cause [inc/navbar.up2index.html](../inc/navbar.up2index.html)
@@ -513,14 +515,16 @@ If `name` is dot (i.e., `.`), then the given HTML phase is skipped.
For example:
``` <!---sh-->
-H footer=.
-H footer=.
```
will cause no HTML content to be produced during the `footer` HTML phase.
## <div id="html">HTML phases</div>
<div id="html">
## HTML phases
</div>
The following HTML phase files are used to build HTML content:
@@ -546,18 +550,24 @@ Phases 23-29 are reserved for future use.
Phases 33-39 are reserved for future use.
In the above HTML phase numbers, except during HTML phase numbers 20-29, symbols
of the form `%%TOKEN%%` are substituted.
In all of the above HTML phase numbers, symbols of the form **%%TOKEN%%** are substituted.
Any `%%TOKEN%%` printed by the 'before tool' (`-b tool`), the 'pandoc wrapper
tool' (`-p tool`), and the 'after tool' (`-a tool`) are ignored (i.e., not
substituted).
Substitutions of and **%%TOKEN%%** are performed on included HTML content,
content generated by the 'before tool' (`-b tool`),
content generated by the 'after tool' (`-a tool`),
as well as the markdown content given to the `pandoc wrapper tool` (`-p tool`).
It is an error, unless `-S` is given, for any phase, except phases HTML
20-29, to not substitute all **%%TOKEN%%**'s. For phases HTML 20-29, any
**%%TOKEN%%** that is not substituted are passed thru without substitution.
See the tool [readme2index.sh](readme2index.sh) for an example of
how HTML phases are implemented.
## <div id="getopt">`getopt` phase processing of the command line</div>
<div id="getopt">
## getopt phase processing of the command line
</div>
The command options are evaluated in the following `getopt` phases:
@@ -625,16 +635,16 @@ IMPORTANT: An "output tool" will print each command line option / argument on a
So for example, if an "output tool" wishes to convey:
```
-s TITLE='IOCCC entry locations' -H navbar=top-of-site
-s TITLE='IOCCC entry locations' -H navbar=top-of-site
```
The "output tool" would output the following 4 lines:
```
-s
TITLE='IOCCC entry locations'
-H
navbar=top-of-site
-s
TITLE='IOCCC entry locations'
-H
navbar=top-of-site
```
The command line options printed by an "output tool" are processed
@@ -645,7 +655,7 @@ on the command line.
For example:
```
command [command_options ..] [cfg_options ..] [output_tool_options ..] [--] [filename_arg ..]
command [command_options ..] [cfg_options ..] [output_tool_options ..] [--] [filename_arg ..]
```
Here the `command` first processes any command line options, then it processes
@@ -709,7 +719,7 @@ on the [experimental web site](https://ioccc-src.github.io/temp-test-ioccc/).
(called default HTML files) ...:
```
*.default.html
*.default.html
```
... contain default content used to form IOCCC HTML / IOCCC web pages.
@@ -727,7 +737,9 @@ we even need the tools in the [bin](index.html) directory when there other
solutions available to form web pages.
## <div id="static-only">Static web pages only</div>
<div id="static-only">
## Static web pages only
</div>
Here are some reasons why we are using these files and
special tools to create HTML content / IOCCC web pages:
@@ -752,7 +764,9 @@ We use [static web pages](#static-only), so use of a "back-end database" is not
available to the IOCCC.
## <div id="why-github">We cannot use non-GitHub web servers</div>
<div id="why-github">
## We cannot use non-GitHub web servers
</div>
The [GitHub pages](https://pages.github.com) have the distributed server capacity needed to handle
the **huge download volume** or [Slashdot effect](https://en.wikipedia.org/wiki/Slashdot_effect)
@@ -823,7 +837,9 @@ site](https://www.ioccc.org).
For this reason, we cannot use JavaScript include HTML content.
# <div id="terms">IOCCC terms</div>
<div id="terms">
# IOCCC terms
</div>
The following IOCCC terms apply to tools, JSON files, and the directory structure of this repo.
@@ -845,7 +861,7 @@ IOCCC. Each author has **EXACTLY ONE** `author_handle`.
For each `author_handle`, there will be a JSON file located at:
```
author/author_handle.json
author/author_handle.json
```
where `author_handle` is the author's `author_handle`.
@@ -856,7 +872,7 @@ document). In particular, the `author_handle` must be an ASCII
string that matches this regexp:
``` <!---re-->
^[0-9A-Za-z][0-9A-Za-z._+-]*$"
^[0-9A-Za-z][0-9A-Za-z._+-]*$"
```
Default `author_handle`'s do not have multiple consecutive `_` (underscore)
@@ -876,13 +892,13 @@ author.
For an anonymous `author`, their handle is one of these forms:
```
Anonymous_year
Anonymous_year
```
or:
```
Anonymous_year.digits
Anonymous_year.digits
```
@@ -895,7 +911,7 @@ in the case of [2005/anon](../2005/anon/anon.c).
Anonymous `author_handle`'s match this regexp:
``` <!---re-->
Anonymous_[0-9][0-9][0-9][0-9][.0-9]*$
Anonymous_[0-9][0-9][0-9][0-9][.0-9]*$
```
@@ -927,7 +943,7 @@ Non-numeric `year` strings are lower case.
A `year` string matches this regexp:
``` <!---re-->
[0-9a-z][0-9a-z][0-9a-z][0-9a-z]
[0-9a-z][0-9a-z][0-9a-z][0-9a-z]
```
The `year` directories reside directly below the top level directory.
@@ -938,7 +954,7 @@ The `year` directories reside directly below the top level directory.
Each `year` directory will have a file under it named:
```
.year
.year
```
The contents of the `.year` file is the year string of the directory. For
@@ -952,7 +968,7 @@ A `dir` is a POSIX safe string that holds an entry.
A `dir` is a string that matches this regexp:
``` <!---re-->
^[a-z][0-9a-z.-]*$
^[a-z][0-9a-z.-]*$
```
Each `entry` is under its own individual directory. This directory
@@ -964,7 +980,7 @@ is directly under a `year` directory.
A string that identifies the winning entry. The string is of the form:
```
year_dir
year_dir
```
+8 -5
View File
@@ -84,7 +84,7 @@ shopt -s globstar # enable ** to match all files and zero or more directories an
# set variables referenced in the usage message
#
export VERSION="1.0.4 2024-04-13"
export VERSION="1.1 2024-04-20"
NAME=$(basename "$0")
export NAME
export V_FLAG=0
@@ -221,12 +221,8 @@ while getopts :hv:Vd:D:nNt:T:p:u:w: flag; do
TOOL_OPTION+=("$PANDOC_WRAPPER")
;;
u) REPO_URL="$OPTARG"
TOOL_OPTION+=("-u")
TOOL_OPTION+=("$REPO_URL")
;;
w) SITE_URL="$OPTARG"
TOOL_OPTION+=("-w")
TOOL_OPTION+=("$SITE_URL")
;;
\?) echo "$0: ERROR: invalid option: -$OPTARG" 1>&2
echo 1>&2
@@ -342,6 +338,10 @@ fi
#
TOOL_OPTION+=("-t")
TOOL_OPTION+=("$TAGLINE")
TOOL_OPTION+=("-u")
TOOL_OPTION+=("$REPO_URL")
TOOL_OPTION+=("-w")
TOOL_OPTION+=("$SITE_URL")
# print running info if verbose
#
@@ -631,17 +631,20 @@ for YYYY in $(< "$TOP_FILE"); do
if [[ $V_FLAG -ge 3 ]]; then
echo "$0: debug[3]: about to run: $MD2HTML_SH ${TOOL_OPTION[*]}" \
"-s $DESCRIPTION -s $KEYWORDS -s $HEADER_2" \
"-s REPO_URL=$REPO_URL -s SITE_URL=$SITE_URL" \
"-s $UP_LINK -s $UP_TEXT -D $D_OPTION -m $MD_FILE -v $V_FLAG --" \
"$MD_FILE $HTML_FLLE" 1>&2
fi
"$MD2HTML_SH" "${TOOL_OPTION[@]}" \
-s "$DESCRIPTION" -s "$KEYWORDS" -s "$HEADER_2" \
-s "REPO_URL=$REPO_URL" -s "SITE_URL=$SITE_URL" \
-s "$UP_LINK" -s "$UP_TEXT" -D "$D_OPTION" -m "$MD_FILE" -v "$V_FLAG" -- \
"$MD_FILE" "$HTML_FLLE"
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: tool: $MD2HTML_SH ${TOOL_OPTION[*]}" \
"-s $DESCRIPTION -s $KEYWORDS -s $HEADER_2" \
"-s REPO_URL=$REPO_URL -s SITE_URL=$SITE_URL" \
"-s $UP_LINK -s $UP_TEXT -D $D_OPTION -m $MD_FILE -v $V_FLAG --" \
"$MD_FILE $HTML_FLLE failed, error: $status" 1>&2
echo 1 > "$TMP_EXIT_CODE" # exit 1
+71 -74
View File
@@ -144,63 +144,63 @@ repo</a>.</p>
<h3 id="all-run.sh"><a href="all-run.sh">all-run.sh</a></h3>
<p>Run a command on all winning entries.</p>
<p>For example:</p>
<pre><code>bin/all-run.sh -v 3 bin/quick-readme2index.sh -v 1</code></pre>
<pre><code> bin/all-run.sh -v 3 bin/quick-readme2index.sh -v 1</code></pre>
<p>Or for example:</p>
<pre><code>bin/all-run.sh -v 3 bin/readme2index.sh -v 1</code></pre>
<pre><code> bin/all-run.sh -v 3 bin/readme2index.sh -v 1</code></pre>
<h3 id="all-years.sh"><a href="all-years.sh">all-years.sh</a></h3>
<p>Run a command on all IOCCC years.</p>
<p>For example:</p>
<pre><code>bin/all-years.sh -v 1 bin/gen-year-index.sh -v 1</code></pre>
<pre><code> bin/all-years.sh -v 1 bin/gen-year-index.sh -v 1</code></pre>
<p>Or for example:</p>
<pre><code>bin/all-years.sh -v 1 bin/chk-entry.sh</code></pre>
<pre><code> bin/all-years.sh -v 1 bin/chk-entry.sh</code></pre>
<p>We recommend that this tool be invoked via the top level <code>Makefile</code>:</p>
<pre><code>make verify_entry_files</code></pre>
<pre><code> make verify_entry_files</code></pre>
<h3 id="chk-entry.sh"><a href="chk-entry.sh">chk-entry.sh</a></h3>
<p>Check that files required by an entry match the entry’s manifest as found in
<code>.entry.json</code>.</p>
<p>For example:</p>
<pre><code>bin/chk-entry.sh 2020/ferguson1</code></pre>
<pre><code> bin/chk-entry.sh 2020/ferguson1</code></pre>
<h3 id="filelist.entry.json.awk"><a href="filelist.entry.json.awk">filelist.entry.json.awk</a></h3>
<p>Generate the list of files in the entry’s manifest, <code>.entry.json</code>.</p>
<p>For example:</p>
<pre><code>awk -f bin/filelist.entry.json.awk 2020/ferguson1/.entry.json</code></pre>
<pre><code> awk -f bin/filelist.entry.json.awk 2020/ferguson1/.entry.json</code></pre>
<h3 id="gen-authors.sh"><a href="gen-authors.sh">gen-authors.sh</a></h3>
<p>Generate the top level <code>/authors.html</code> page.</p>
<p>Usage:</p>
<pre><code>bin/gen-authors.sh -v 1</code></pre>
<pre><code> bin/gen-authors.sh -v 1</code></pre>
<h3 id="gen-location.sh"><a href="gen-location.sh">gen-location.sh</a></h3>
<p>Generate the top level <code>/location.html</code> page.</p>
<p>Usage:</p>
<pre><code>bin/gen-location.sh -v 1</code></pre>
<pre><code> bin/gen-location.sh -v 1</code></pre>
<h3 id="gen-other-html.sh"><a href="gen-other-html.sh">gen-other-html.sh</a></h3>
<p>Generate entry HTML files (other than README.md to index.html) from markdown
files.</p>
<p>Usage:</p>
<pre><code>bin/gen-other-html.sh -v 1</code></pre>
<pre><code> bin/gen-other-html.sh -v 1</code></pre>
<h3 id="gen-sitemap.sh"><a href="gen-sitemap.sh">gen-sitemap.sh</a></h3>
<p>Generate an XML sitemap for the IOCCC web site.</p>
<p>Usage:</p>
<pre><code>bin/gen-sitemap.sh -v 1</code></pre>
<pre><code> bin/gen-sitemap.sh -v 1</code></pre>
<p>We recommend that this tool be invoked via the top level <code>Makefile</code>:</p>
<pre><code>make gen_sitemap</code></pre>
<pre><code> make gen_sitemap</code></pre>
<h3 id="gen-status.sh"><a href="gen-status.sh">gen-status.sh</a></h3>
<p>Generate <code>status.json</code> according to the modification dates of <code>status.json</code>
and <code>news.html</code>.</p>
<p>Without argument, the <code>contest_status</code> is unchanged.</p>
<p>Usage:</p>
<pre><code>bin/gen-status.sh -v 1</code></pre>
<pre><code> bin/gen-status.sh -v 1</code></pre>
<p>To force the <code>contest_status</code> to be closed:</p>
<pre><code>bin/gen-status.sh -v 1 closed</code></pre>
<pre><code> bin/gen-status.sh -v 1 closed</code></pre>
<p>To force the <code>contest_status</code> to be open:</p>
<pre><code>bin/gen-status.sh -v 1 open</code></pre>
<pre><code> bin/gen-status.sh -v 1 open</code></pre>
<p>To see other valid statuses:</p>
<pre><code>bin/gen-status -h</code></pre>
<pre><code> bin/gen-status -h</code></pre>
<p>We recommend that this tool be invoked via the top level <code>Makefile</code>:</p>
<pre><code>make gen_status</code></pre>
<pre><code> make gen_status</code></pre>
<h3 id="gen-top-html.sh"><a href="gen-top-html.sh">gen-top-html.sh</a></h3>
<p>Generate a number of top level HTML pages for the IOCCC web sites.</p>
<p>Usage:</p>
<pre><code>bin/gen-top-html.sh -v 1</code></pre>
<pre><code> bin/gen-top-html.sh -v 1</code></pre>
<p>Examples of top level HTML pages built by this tool include:</p>
<ul>
<li><a href="../CODE_OF_CONDUCT.html">CODE_OF_CONDUCT.html</a></li>
@@ -217,19 +217,19 @@ and <code>news.html</code>.</p>
<li><a href="../thanks-for-help.html">thanks-for-help.html</a></li>
</ul>
<p>We recommend that this tool be invoked via the top level <code>Makefile</code>:</p>
<pre><code>make gen_top_html</code></pre>
<pre><code> make gen_top_html</code></pre>
<h3 id="gen-year-index.sh"><a href="gen-year-index.sh">gen-year-index.sh</a></h3>
<p>Generate an <code>index.html</code> page for an given IOCCC year.</p>
<p>Usage:</p>
<pre><code>bin/gen-year-index.sh -v 1 2020</code></pre>
<pre><code> bin/gen-year-index.sh -v 1 2020</code></pre>
<p>We recommend that this tool be invoked via the top level <code>Makefile</code>:</p>
<pre><code>make gen_year_index</code></pre>
<pre><code> make gen_year_index</code></pre>
<h3 id="gen-years.sh"><a href="gen-years.sh">gen-years.sh</a></h3>
<p>Generate the top level <code>/years.html</code> page.</p>
<p>Usage:</p>
<pre><code>bin/gen-years.sh -v 1</code></pre>
<pre><code> bin/gen-years.sh -v 1</code></pre>
<p>We recommend that this tool be invoked via the top level <code>Makefile</code>:</p>
<pre><code>make gen_years</code></pre>
<pre><code> make gen_years</code></pre>
<h3 id="md2html.sh"><a href="md2html.sh">md2html.sh</a></h3>
<p>This is the primary tool that forms IOCCC generated HTML content from
markdown files (permanent markdown files or temporarily generated
@@ -258,19 +258,19 @@ the extra time can add up.</p>
<p>If only a few <code>index.hmtl</code> files need updating, then
this command will only briefly pause while the
slightly longer <a href="readme2index.sh">readme2index.sh</a> is run:</p>
<pre><code>bin/all-run.sh -v 3 bin/quick-readme2index.sh -v 1</code></pre>
<pre><code> bin/all-run.sh -v 3 bin/quick-readme2index.sh -v 1</code></pre>
<p><strong>NOTE</strong>: This command assumes that the relative
modification times for <code>index.hmtl</code>, <code>.entry.json</code>,
and <code>index.html</code> are correct. If in doubt, use:</p>
<p>We recommend that this tool be invoked via the top level <code>Makefile</code>:</p>
<pre><code>make quick_entry_index</code></pre>
<pre><code> make quick_entry_index</code></pre>
<h3 id="readme2index.sh"><a href="readme2index.sh">readme2index.sh</a></h3>
<p>Convert an entry README.md into entry directory index.html.</p>
<pre><code>bin/all-run.sh -v 3 bin/readme2index.sh -v 1</code></pre>
<pre><code> bin/all-run.sh -v 3 bin/readme2index.sh -v 1</code></pre>
<p>To build <code>index.html</code> files for all entries:</p>
<pre><code>bin/all-run.sh -v 3 bin/readme2index.sh -v 1</code></pre>
<pre><code> bin/all-run.sh -v 3 bin/readme2index.sh -v 1</code></pre>
<p>We recommend that this tool be invoked via the top level <code>Makefile</code>:</p>
<pre><code>make entry_index</code></pre>
<pre><code> make entry_index</code></pre>
<h3 id="status2html.sh"><a href="status2html.sh">status2html.sh</a></h3>
<p>Convert <code>status.json</code> into HTML.</p>
<p>This tool is a ‘before tool’ (-b tool) that is intended
@@ -285,11 +285,11 @@ We sort with lines starting with <code>!</code> fourth.</p>
<h3 id="sort.gitignore.sh"><a href="sort.gitignore.sh">sort.gitignore.sh</a></h3>
<p>Sort a .gitignore in a entry directory.</p>
<p>Usage:</p>
<pre><code>bin/sort.gitignore.sh -v 1 YYYY/dir</code></pre>
<pre><code> bin/sort.gitignore.sh -v 1 YYYY/dir</code></pre>
<p>Suggested usage:</p>
<pre><code>bin/all-run.sh bin/sort.gitignore.sh -v 1</code></pre>
<pre><code> bin/all-run.sh bin/sort.gitignore.sh -v 1</code></pre>
<p>We recommend that this tool be invoked via the top level <code>Makefile</code>:</p>
<pre><code>make sort_gitignore</code></pre>
<pre><code> make sort_gitignore</code></pre>
<h3 id="subst.default.sh"><a href="subst.default.sh">subst.default.sh</a></h3>
<p>Print default substitutions.</p>
<h3 id="subst.entry-index.sh"><a href="subst.entry-index.sh">subst.entry-index.sh</a></h3>
@@ -317,22 +317,21 @@ We sort with lines starting with <code>!</code> fourth.</p>
<h2 id="untar-entry.sh"><a href="untar-entry.sh">untar-entry.sh</a></h2>
<p>Untar an entry’s a compressed tarball.</p>
<p>Usage:</p>
<pre><code>bin/untar-entry.sh -v 1 YYYY/dir</code></pre>
<pre><code> bin/untar-entry.sh -v 1 YYYY/dir</code></pre>
<p>Suggested usage:</p>
<pre><code>bin/all-run.sh -v 3 bin/untar-entry.sh -v 1</code></pre>
<pre><code> bin/all-run.sh -v 3 bin/untar-entry.sh -v 1</code></pre>
<p>We recommend that this tool be invoked via the top level <code>Makefile</code>:</p>
<pre><code>make untar_entry_tarball</code></pre>
<pre><code> make untar_entry_tarball</code></pre>
<h2 id="untar-year.sh"><a href="untar-year.sh">untar-year.sh</a></h2>
<p>Untar an IOCCC year’s compressed tarball.</p>
<p>Usage:</p>
<pre><code>bin/untar-year.sh -v 1 YYYY</code></pre>
<pre><code> bin/untar-year.sh -v 1 YYYY</code></pre>
<p>Suggested usage:</p>
<pre><code>bin/all-years.sh -v 3 bin/untar-year.sh -v 1</code></pre>
<pre><code> bin/all-years.sh -v 3 bin/untar-year.sh -v 1</code></pre>
<p>We recommend that this tool be invoked via the top level <code>Makefile</code>:</p>
<pre><code>make untar_year_tarball</code></pre>
#
<pre><code> make untar_year_tarball</code></pre>
<div id="how">
How IOCCC HTML content is built
<h1 id="how-ioccc-html-content-is-built">How IOCCC HTML content is built</h1>
</div>
<p>The <a href="md2html.sh">md2html.sh</a> tool is the primary tool that
is used to form all IOCCC related HTML pages for the <a href="https://www.ioccc.org">official IOCCC web
@@ -347,22 +346,21 @@ tools in the <a href="index.html">bin directory</a> and exist only while the too
<p>In addition to converting markdown to HTML, the canonical way that HTML content is
built uses, by default, files from the <a href="../inc/index.html">inc directory</a>, of
the file name form:</p>
<pre><code>*.default.html</code></pre>
<pre><code> *.default.html</code></pre>
<p>By using command line options of the form:</p>
<pre><code>-H phase=name</code></pre>
<pre><code> -H phase=name</code></pre>
<p>where <code>phase</code> is the name of an HTML phase,
a non-default file may be used. For example:</p>
<pre><code>-H navbar=up2index</code></pre>
<pre><code> -H navbar=up2index</code></pre>
<p>will cause <a href="../inc/navbar.up2index.html">inc/navbar.up2index.html</a>
instead of <a href="../inc/navbar.default.html">inc/navbar.default.html</a> to be
used during the <em>navbar</em> HTML phase.</p>
<p>If <code>name</code> is dot (i.e., <code>.</code>), then the given HTML phase is skipped.
For example:</p>
<pre><code>-H footer=.</code></pre>
<pre><code> -H footer=.</code></pre>
<p>will cause no HTML content to be produced during the <code>footer</code> HTML phase.</p>
##
<div id="html">
HTML phases
<h2 id="html-phases">HTML phases</h2>
</div>
<p>The following HTML phase files are used to build HTML content:</p>
<ol start="0" type="1">
@@ -387,16 +385,18 @@ HTML phases
<li>inc/bottom.default.html</li>
</ol>
<p>Phases 33-39 are reserved for future use.</p>
<p>In the above HTML phase numbers, except during HTML phase numbers 20-29, symbols
of the form <code>%%TOKEN%%</code> are substituted.</p>
<p>Any <code>%%TOKEN%%</code> printed by the ‘before tool’ (<code>-b tool</code>), the ‘pandoc wrapper
tool’ (<code>-p tool</code>), and the ‘after tool’ (<code>-a tool</code>) are ignored (i.e., not
substituted).</p>
<p>In all of the above HTML phase numbers, symbols of the form <strong>%%TOKEN%%</strong> are substituted.</p>
<p>Substitutions of and <strong>%%TOKEN%%</strong> are performed on included HTML content,
content generated by the ‘before tool’ (<code>-b tool</code>),
content generated by the ‘after tool’ (<code>-a tool</code>),
as well as the markdown content given to the <code>pandoc wrapper tool</code> (<code>-p tool</code>).</p>
<p>It is an error, unless <code>-S</code> is given, for any phase, except phases HTML
20-29, to not substitute all <strong>%%TOKEN%%</strong>’s. For phases HTML 20-29, any
<strong>%%TOKEN%%</strong> that is not substituted are passed thru without substitution.</p>
<p>See the tool <a href="readme2index.sh">readme2index.sh</a> for an example of
how HTML phases are implemented.</p>
##
<div id="getopt">
<code>getopt</code> phase processing of the command line
<h2 id="getopt-phase-processing-of-the-command-line">getopt phase processing of the command line</h2>
</div>
<p>The command options are evaluated in the following <code>getopt</code> phases:</p>
<h3 id="getopt-phase-0"><code>getopt</code> phase 0</h3>
@@ -430,18 +430,18 @@ the same <code>token</code> <em>only</em>.</p>
<p>An “output tool” may be used to add certain additional command line options to be processed.</p>
<p>IMPORTANT: An “output tool” will print each command line option / argument on a separate line.
So for example, if an “output tool” wishes to convey:</p>
<pre><code>-s TITLE=&#39;IOCCC entry locations&#39; -H navbar=top-of-site</code></pre>
<pre><code> -s TITLE=&#39;IOCCC entry locations&#39; -H navbar=top-of-site</code></pre>
<p>The “output tool” would output the following 4 lines:</p>
<pre><code>-s
TITLE=&#39;IOCCC entry locations&#39;
-H
navbar=top-of-site</code></pre>
<pre><code> -s
TITLE=&#39;IOCCC entry locations&#39;
-H
navbar=top-of-site</code></pre>
<p>The command line options printed by an “output tool” are processed
after all command line options, and all options from a matching
line from the <code>md2html.cfg</code> file, and before any filename arguments
on the command line.</p>
<p>For example:</p>
<pre><code>command [command_options ..] [cfg_options ..] [output_tool_options ..] [--] [filename_arg ..]</code></pre>
<pre><code> command [command_options ..] [cfg_options ..] [output_tool_options ..] [--] [filename_arg ..]</code></pre>
<p>Here the <code>command</code> first processes any command line options, then it processes
<code>cfg_options</code> obtained from this file from a first match of a given <code>file_glob</code>,
then it processes <code>output tool</code> (i.e., <code>-o tool</code>) options found in
@@ -486,7 +486,7 @@ on the <a href="https://www.ioccc.org">official IOCCC web site</a>.</p>
on the <a href="https://ioccc-src.github.io/temp-test-ioccc/">experimental web site</a>.</p>
<p>… and in particular files under <a href="../inc/index.html">inc</a> that are of the form
(called default HTML files) …:</p>
<pre><code>*.default.html</code></pre>
<pre><code> *.default.html</code></pre>
<p>… contain default content used to form IOCCC HTML / IOCCC web pages.</p>
<p>Instead of editing the default HTML files in order to fix a special web page,
consider making a copy of the default file and modifying the <a href="md2html.cfg">md2html config
@@ -496,9 +496,8 @@ situation will not impact <strong>MOST</strong> of the HTML content.</p>
<p>You may wonder why we need these files in the first place. You may wonder why
we even need the tools in the <a href="index.html">bin</a> directory when there other
solutions available to form web pages.</p>
##
<div id="static-only">
Static web pages only
<h2 id="static-web-pages-only">Static web pages only</h2>
</div>
<p>Here are some reasons why we are using these files and
special tools to create HTML content / IOCCC web pages:</p>
@@ -513,9 +512,8 @@ pages</a>.</p>
<h2 id="we-cannot-use-a-back-end-database">We cannot use a back-end database</h2>
<p>We use <a href="#static-only">static web pages</a>, so use of a “back-end database” is not
available to the IOCCC.</p>
##
<div id="why-github">
We cannot use non-GitHub web servers
<h2 id="we-cannot-use-non-github-web-servers">We cannot use non-GitHub web servers</h2>
</div>
<p>The <a href="https://pages.github.com">GitHub pages</a> have the distributed server capacity needed to handle
the <strong>huge download volume</strong> or <a href="https://en.wikipedia.org/wiki/Slashdot_effect">Slashdot effect</a>
@@ -563,9 +561,8 @@ disabled.</p>
<p>The IOCCC will <strong>NOT MANDATE USE OF JavaScript</strong> to view <a href="https://www.ioccc.org">official IOCCC web
site</a>.</p>
<p>For this reason, we cannot use JavaScript include HTML content.</p>
#
<div id="terms">
IOCCC terms
<h1 id="ioccc-terms">IOCCC terms</h1>
</div>
<p>The following IOCCC terms apply to tools, JSON files, and the directory structure of this repo.</p>
<h2 id="author"><code>author</code></h2>
@@ -577,13 +574,13 @@ IOCCC entries have more than one author. In that case we might use the word
<p>An <code>author_handle</code> is string that refers to a given author and is unique to the
IOCCC. Each author has <strong>EXACTLY ONE</strong> <code>author_handle</code>.</p>
<p>For each <code>author_handle</code>, there will be a JSON file located at:</p>
<pre><code>author/author_handle.json</code></pre>
<pre><code> author/author_handle.json</code></pre>
<p>where <code>author_handle</code> is the author’s <code>author_handle</code>.</p>
<p>Because the <code>author_handle</code> is used to form a JSON filename, the string must be
a POSIX safe string with the addition of <code>+</code> (for technical reasons beyond this
document). In particular, the <code>author_handle</code> must be an ASCII
string that matches this regexp:</p>
<pre><code>^[0-9A-Za-z][0-9A-Za-z._+-]*$&quot;</code></pre>
<pre><code> ^[0-9A-Za-z][0-9A-Za-z._+-]*$&quot;</code></pre>
<p>Default <code>author_handle</code>’s do not have multiple consecutive <code>_</code> (underscore)
characters. Nevertheless, multiple consecutive <code>_</code> (underscore) characters are
allowed. Contest submitters who wish to override the <code>author_handle</code> may do so.</p>
@@ -596,15 +593,15 @@ desire.</p>
<code>author_handle</code> so that new winning entries can be associated with the same
author.</p>
<p>For an anonymous <code>author</code>, their handle is one of these forms:</p>
<pre><code>Anonymous_year</code></pre>
<pre><code> Anonymous_year</code></pre>
<p>or:</p>
<pre><code>Anonymous_year.digits</code></pre>
<pre><code> Anonymous_year.digits</code></pre>
<p>The latter form is in case there are more than one anonymous author in a given
year.</p>
<p>NOTE: even if the directory name is not <code>anonymous</code> the above rules apply as in
in the case of <a href="../2005/anon/anon.c">2005/anon</a>.</p>
<p>Anonymous <code>author_handle</code>’s match this regexp:</p>
<pre><code>Anonymous_[0-9][0-9][0-9][0-9][.0-9]*$</code></pre>
<pre><code> Anonymous_[0-9][0-9][0-9][0-9][.0-9]*$</code></pre>
<h2 id="entry"><code>entry</code></h2>
<p>An IOCCC entry that won an award for a given IOCCC.</p>
<p>An <code>entry</code> has one more more <code>author</code>s.</p>
@@ -621,22 +618,22 @@ may be limited to previous <code>entry</code>s that used them.</p>
represent the year. Some special <code>year</code> strings are possible, such as <code>mock</code>.
Non-numeric <code>year</code> strings are lower case.</p>
<p>A <code>year</code> string matches this regexp:</p>
<pre><code>[0-9a-z][0-9a-z][0-9a-z][0-9a-z]</code></pre>
<pre><code> [0-9a-z][0-9a-z][0-9a-z][0-9a-z]</code></pre>
<p>The <code>year</code> directories reside directly below the top level directory.</p>
<h2 id="year-1"><code>.year</code></h2>
<p>Each <code>year</code> directory will have a file under it named:</p>
<pre><code>.year</code></pre>
<pre><code> .year</code></pre>
<p>The contents of the <code>.year</code> file is the year string of the directory. For
instance, <a href="../2020/.year">2020/.year</a> has the string: <code>2020</code>.</p>
<h2 id="dir"><code>dir</code></h2>
<p>A <code>dir</code> is a POSIX safe string that holds an entry.</p>
<p>A <code>dir</code> is a string that matches this regexp:</p>
<pre><code>^[a-z][0-9a-z.-]*$</code></pre>
<pre><code> ^[a-z][0-9a-z.-]*$</code></pre>
<p>Each <code>entry</code> is under its own individual directory. This directory
is directly under a <code>year</code> directory.</p>
<h3 id="entry_id"><code>entry_id</code></h3>
<p>A string that identifies the winning entry. The string is of the form:</p>
<pre><code>year_dir</code></pre>
<pre><code> year_dir</code></pre>
<!--
Copyright © 1984-2024 by Landon Curt Noll. All Rights Reserved.
+5 -4
View File
@@ -141,7 +141,7 @@ shopt -s lastpipe # run last command of a pipeline not executed in the backgroun
# set variables referenced in the usage message
#
export VERSION="1.4 2024-04-18"
export VERSION="1.5 2024-04-20"
NAME=$(basename "$0")
export NAME
export V_FLAG=0
@@ -1684,7 +1684,7 @@ fi
# input.md is -, we will need to capture standard input into a new temporary file
#
export ORIG_INPUT_MD="$INPUT_MD"
export ORIG_INPUT_MD="$MATCH_MD"
if [[ -z $NOOP ]]; then
if [[ $INPUT_MD == - ]]; then
export TMP_INPUT_MD=".$NAME.$$.stdin.md"
@@ -1751,6 +1751,7 @@ if [[ -z $NOOP ]]; then
#
echo "<!-- BEFORE: 1st line of markdown file: $ORIG_INPUT_MD -->" > "$TMP_STRIPPED_MD"
# perform the %%TOKEN%% substitutions markdown file AND
# strip commented language after markdown code block
#
# We do not want the sed extended regular expression to be expanded, so
@@ -1759,10 +1760,10 @@ if [[ -z $NOOP ]]; then
# SC2016 (info): Expressions don't expand in single quotes, use double quotes for that.
# https://www.shellcheck.net/wiki/SC2016
# shellcheck disable=SC2016
sed -E -e 's/^```[[:space:]]<!---[^-][^-]*-->/```/' "$INPUT_MD" >> "$TMP_STRIPPED_MD"
sed -E -e 's/^```[[:space:]]<!---[^-][^-]*-->/```/' -f "$TMP_SED_SCRIPT" "$INPUT_MD" >> "$TMP_STRIPPED_MD"
status="$?"
if [[ $status -ne 0 ]]; then
echo "$0: ERROR: strip commented language after markdown code block from $INPUT_MD into file:" \
echo "$0: ERROR: token substation and strip code block command language from $INPUT_MD into file:" \
"$TMP_INPUT_MD failed, error code: $status" 1>&2
exit 25
fi
+12 -1
View File
@@ -92,7 +92,7 @@ shopt -s globstar # enable ** to match all files and zero or more directories an
# set variables referenced in the usage message
#
export VERSION="1.2.3 2024-04-13"
export VERSION="1.3 2024-04-20"
NAME=$(basename "$0")
export NAME
export V_FLAG=0
@@ -260,6 +260,16 @@ fi
echo "-s"
echo "HEADER_1=The International Obfuscated C Code Contest"
# output REPO_URL substitution
#
echo "-s"
echo "REPO_URL=$REPO_URL"
# output SITE_URL substitution
#
echo "-s"
echo "SITE_URL=$SITE_URL"
# output DOCROOT_SLASH substitution
#
echo "-s"
@@ -271,6 +281,7 @@ export VALIDATOR_ENCODED_URL
echo "-s"
echo "VALIDATOR_ENCODED_URL=$VALIDATOR_ENCODED_URL"
# All Done!!! -- Jessica Noll, Age 2
#
exit 0
+2 -2
View File
@@ -132,7 +132,7 @@
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<!-- BEFORE: 1st line of markdown file: .gen-location.sh.48159.location.md -->
<!-- BEFORE: 1st line of markdown file: location.md -->
<ul>
<li><div id="AU">
<strong>AU</strong> - <em>Commonwealth of Australia</em> (<em>Australia</em>)
@@ -540,7 +540,7 @@
</p></li>
</ul></li>
</ul>
<!-- AFTER: last line of markdown file: .gen-location.sh.48159.location.md -->
<!-- AFTER: last line of markdown file: location.md -->
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->
+42 -38
View File
@@ -3158,11 +3158,11 @@
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/1992/buzzard.2/buzzard.2.README.html</loc>
<lastmod>2024-04-19T08:14:05+00:00</lastmod>
<lastmod>2024-04-21T06:04:43+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/1992/buzzard.2/buzzard.2.README.md</loc>
<lastmod>2024-04-12T18:22:04+00:00</lastmod>
<lastmod>2024-04-21T06:04:40+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/1992/buzzard.2/demo1.1st</loc>
@@ -7826,7 +7826,7 @@
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2004/anonymous/.entry.json</loc>
<lastmod>2024-04-16T18:02:26+00:00</lastmod>
<lastmod>2024-04-20T21:38:41+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2004/anonymous/.gitignore</loc>
@@ -7834,11 +7834,15 @@
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2004/anonymous/index.html</loc>
<lastmod>2024-04-19T08:15:41+00:00</lastmod>
<lastmod>2024-04-21T03:58:57+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2004/anonymous/Makefile</loc>
<lastmod>2024-03-23T07:10:42+00:00</lastmod>
<lastmod>2024-04-21T03:56:15+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2004/anonymous/One_Ring_inscription.png</loc>
<lastmod>2024-04-20T21:47:08+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2004/anonymous/.path</loc>
@@ -7846,7 +7850,7 @@
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2004/anonymous/README.md</loc>
<lastmod>2024-04-17T07:31:20+00:00</lastmod>
<lastmod>2024-04-20T21:47:22+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2004/anonymous/try.sh</loc>
@@ -8290,7 +8294,7 @@
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2004/index.html</loc>
<lastmod>2024-04-19T08:13:59+00:00</lastmod>
<lastmod>2024-04-20T21:00:59+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2004/jdalbec/2004_jdalbec.tar.bz2</loc>
@@ -8874,7 +8878,7 @@
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2005/boutines/index.html</loc>
<lastmod>2024-04-19T08:15:50+00:00</lastmod>
<lastmod>2024-04-21T04:19:45+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2005/boutines/input.txt</loc>
@@ -8890,7 +8894,7 @@
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2005/boutines/README.md</loc>
<lastmod>2024-04-17T07:32:28+00:00</lastmod>
<lastmod>2024-04-21T04:16:36+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2005/boutines/try.sh</loc>
@@ -10850,7 +10854,7 @@
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2011/goren/index.html</loc>
<lastmod>2024-04-19T08:16:06+00:00</lastmod>
<lastmod>2024-04-21T03:59:24+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2011/goren/MagrittePipe.jpg</loc>
@@ -10866,7 +10870,7 @@
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2011/goren/README.md</loc>
<lastmod>2024-04-12T18:22:04+00:00</lastmod>
<lastmod>2024-04-20T22:23:44+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2011/goren/try.sh</loc>
@@ -12082,7 +12086,7 @@
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2012/vik/index.html</loc>
<lastmod>2024-04-19T08:16:17+00:00</lastmod>
<lastmod>2024-04-20T22:29:15+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2012/vik/ioccc.png</loc>
@@ -12098,7 +12102,7 @@
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2012/vik/README.md</loc>
<lastmod>2024-04-12T18:22:04+00:00</lastmod>
<lastmod>2024-04-20T22:30:12+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2012/vik/try.sh</loc>
@@ -12286,7 +12290,7 @@
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2013/birken/index.html</loc>
<lastmod>2024-04-19T08:16:18+00:00</lastmod>
<lastmod>2024-04-21T03:59:35+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2013/birken/ioccc.txt</loc>
@@ -12398,7 +12402,7 @@
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2013/birken/README.md</loc>
<lastmod>2024-04-17T06:59:26+00:00</lastmod>
<lastmod>2024-04-21T03:36:52+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2013/birken/rhino.txt</loc>
@@ -12466,7 +12470,7 @@
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2013/cable1/index.html</loc>
<lastmod>2024-04-19T08:16:19+00:00</lastmod>
<lastmod>2024-04-21T04:39:27+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2013/cable1/Makefile</loc>
@@ -12478,7 +12482,7 @@
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2013/cable1/README.md</loc>
<lastmod>2024-04-12T18:22:04+00:00</lastmod>
<lastmod>2024-04-21T04:39:02+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2013/cable1/try.sh</loc>
@@ -12594,7 +12598,7 @@
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2013/cable3/index.html</loc>
<lastmod>2024-04-19T08:16:20+00:00</lastmod>
<lastmod>2024-04-21T03:59:37+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2013/cable3/Makefile</loc>
@@ -12606,7 +12610,7 @@
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2013/cable3/README.md</loc>
<lastmod>2024-04-12T18:22:04+00:00</lastmod>
<lastmod>2024-04-21T03:49:01+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2013/cable3/sc-ioccc.terminal</loc>
@@ -13510,11 +13514,11 @@
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2013/hou/doc/example.html</loc>
<lastmod>2024-04-19T08:14:07+00:00</lastmod>
<lastmod>2024-04-21T04:28:50+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2013/hou/doc/example.md</loc>
<lastmod>2024-04-19T00:43:37+00:00</lastmod>
<lastmod>2024-04-21T04:27:20+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2013/hou/.entry.json</loc>
@@ -13534,7 +13538,7 @@
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2013/hou/index.html</loc>
<lastmod>2024-04-19T08:16:23+00:00</lastmod>
<lastmod>2024-04-21T04:35:24+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2013/hou/luna.jpg</loc>
@@ -13566,7 +13570,7 @@
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2013/hou/README.md</loc>
<lastmod>2024-04-19T00:37:17+00:00</lastmod>
<lastmod>2024-04-21T04:35:13+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2013/hou/try.sh</loc>
@@ -17466,11 +17470,11 @@
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2020/ferguson1/chocolate-cake.html</loc>
<lastmod>2024-04-19T08:14:10+00:00</lastmod>
<lastmod>2024-04-21T04:31:32+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2020/ferguson1/chocolate-cake.md</loc>
<lastmod>2024-04-12T18:22:04+00:00</lastmod>
<lastmod>2024-04-21T04:31:12+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/2020/ferguson1/COMPILING.html</loc>
@@ -18942,7 +18946,7 @@
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/authors.html</loc>
<lastmod>2024-04-19T08:36:03+00:00</lastmod>
<lastmod>2024-04-21T06:47:18+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/author/Sjoerd_Mullender.json</loc>
@@ -19082,7 +19086,7 @@
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/bin/gen-other-html.sh</loc>
<lastmod>2024-04-16T19:14:55+00:00</lastmod>
<lastmod>2024-04-21T05:40:59+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/bin/gen-sitemap.sh</loc>
@@ -19106,7 +19110,7 @@
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/bin/index.html</loc>
<lastmod>2024-04-19T08:14:13+00:00</lastmod>
<lastmod>2024-04-21T06:40:41+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/bin/manifest.entry.json.awk</loc>
@@ -19114,7 +19118,7 @@
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/bin/md2html.sh</loc>
<lastmod>2024-04-19T08:03:32+00:00</lastmod>
<lastmod>2024-04-21T06:46:26+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/bin/output-index-author.sh</loc>
@@ -19142,7 +19146,7 @@
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/bin/README.md</loc>
<lastmod>2024-04-16T23:12:22+00:00</lastmod>
<lastmod>2024-04-21T06:40:32+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/bin/sgi.sh</loc>
@@ -19158,7 +19162,7 @@
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/bin/subst.default.sh</loc>
<lastmod>2024-04-16T19:14:55+00:00</lastmod>
<lastmod>2024-04-21T05:17:54+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/bin/subst.entry-index.sh</loc>
@@ -19210,19 +19214,19 @@
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/contact.html</loc>
<lastmod>2024-04-19T08:14:14+00:00</lastmod>
<lastmod>2024-04-20T20:35:51+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/contact.md</loc>
<lastmod>2024-04-17T06:00:03+00:00</lastmod>
<lastmod>2024-04-20T20:35:51+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/faq.html</loc>
<lastmod>2024-04-19T08:14:14+00:00</lastmod>
<lastmod>2024-04-20T20:35:51+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/faq.md</loc>
<lastmod>2024-04-19T05:37:43+00:00</lastmod>
<lastmod>2024-04-20T20:35:51+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/.gitignore</loc>
@@ -19310,7 +19314,7 @@
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/inc/md2html.cfg</loc>
<lastmod>2024-04-16T19:14:55+00:00</lastmod>
<lastmod>2024-04-21T05:39:44+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/inc/navbar.default.html</loc>
@@ -19410,7 +19414,7 @@
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/location.html</loc>
<lastmod>2024-04-19T08:36:05+00:00</lastmod>
<lastmod>2024-04-21T06:47:31+00:00</lastmod>
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/Makefile</loc>
@@ -19462,6 +19466,6 @@
</url>
<url>
<loc>https://ioccc-src.github.io/temp-test-ioccc/years.html</loc>
<lastmod>2024-04-19T08:36:06+00:00</lastmod>
<lastmod>2024-04-21T06:48:01+00:00</lastmod>
</url>
</urlset>
+3 -3
View File
@@ -132,7 +132,7 @@
<!-- END: this line ends content from: inc/before-content.default.html -->
<!-- START: this line starts content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<!-- BEFORE: 1st line of markdown file: .gen-years.sh.50335.years.md -->
<!-- BEFORE: 1st line of markdown file: years.md -->
<h1 id="ioccc-winning-entries-by-year">IOCCC Winning Entries by Year</h1>
<h3 id="jump-to">Jump to:</h3>
<p><a href="#2020">2020</a> | <a href="#2019">2019</a> | <a href="#2018">2018</a> | <a href="#2015">2015</a> | <a href="#2014">2014</a> | <a href="#2013">2013</a> | <a href="#2012">2012</a> | <a href="#2011">2011</a><br><br>
@@ -367,7 +367,7 @@
<strong>Download</strong> all <a href="2004/2004.tar.bz2">2004 IOCCC entry source</a>
</div>
<ul>
<li><a href="2004/anonymous/index.html">2004/anonymous</a> - “Best use of”“Precious”” Lines”</li>
<li><a href="2004/anonymous/index.html">2004/anonymous</a> - Best use of ‘Precious’ Lines</li>
<li><a href="2004/arachnid/index.html">2004/arachnid</a> - Best use of Vision</li>
<li><a href="2004/burley/index.html">2004/burley</a> - Best Calculated Risk</li>
<li><a href="2004/gavare/index.html">2004/gavare</a> - Best Use of Light and Spheres</li>
@@ -712,7 +712,7 @@
<li>Download all <a href="1984/1984.tar.bz2">1984 IOCCC entry source</a><br></li>
</ul>
<p> <strong>Jump to:</strong> <a href="#">top</a></p>
<!-- AFTER: last line of markdown file: .gen-years.sh.50335.years.md -->
<!-- AFTER: last line of markdown file: years.md -->
<!-- END: this line ends content for HTML phase 21 by: bin/pandoc-wrapper.sh via bin/md2html.sh -->
<!-- START: this line starts content from: inc/after-content.default.html -->