improve markdown to HTML tools, build location.html, authors.html, years.html
Renamed `.winner.json` to `.entry.json` as per recent decisions made for issue #2156. JSON element _winner_JSON_format_version_ renamed to _entry_JSON_format_version_ in `.winner.json`. Changed _entry_JSON_format_version_ from "1.0 2024-01-14" to "1.1 2024-02-11". JSON element _winner_id_ renamed to _entry_id_ in `.entry.json` JSON element _winner_text renamed to _entry_text_ in `.entry.json` JSON element _winner_id_ renamed to _entry_id_ in `author/author_handle.json` files. Changed _author_JSON_format_version_ from "1.0 2023-06-10" to "1.1 2024-02-11". Renamed `tmp/gen_winner_json.sh` to `tmp/gen_entry_json.sh`. Renamed `tmp/example.dot_winner.json` to `tmp/example.dot_entry.json`. Renamed `tmp/winner_id.txt` to `tmp/entry_id.txt`. Renamed `tmp/winner_dir.txt` to `tmp/entry_dir.txt`. Moved outdated `tmp/awards_check.sh` into `tmp/OLD_manifest/awards_check.sh`. Moved outdated `tmp/awards_check.sh` into `tmp/OLD_manifest/awards_check.sh`. Moved outdated `tmp/src/winner_name` into `tmp/OLD_manifest/winner_name`. Moved outdated `tmp/sql` into `tmp/OLD_manifest/sql`. Moved outdated `tmp/template-footer.html` into `tmp/OLD_manifest/template-footer.html`. Moved outdated `tmp/template-header.html` into `tmp/OLD_manifest/template-header.html`. Moved outdated `tmp/template-top.html` into `tmp/OLD_manifest/template-top.html`. Moved outdated `tmp/test.html` into `tmp/OLD_manifest/test.html`. Moved outdated `tmp/fake.gen_index.sh` into `tmp/OLD_manifest/fake.gen_index.sh`. Moved outdated `tmp/old-ioccc.css` into `tmp/OLD_manifest/old-ioccc.css`. Removed winner_name from `tmp/src/Makefile`. Updated `tmp/example.dot_entry.json` to reflect the above JSON changes. Updated `tmp/manifest.numbers` to reflect the above JSON changes. Updated `tmp/README.md` to reflect the above JSON changes. Sorted `tmp/README.md` by existing `tmp` filenames. Updated all `.entry.json` files to reflect the above JSON changes. Updated all `author/author_handle.json` files to reflect the above JSON changes. Added new tool `bin/gen-location.sh` to form the top level file `location.html` from `author/author_handle.json` files! Added new tool `bin/gen-years.sh` to form the top level file `years.html` using `.top`, `.year` and `.entry.json' files! Added new tool `bin/gen-authors.sh` to form a new top level file `/authors.html` from `author/author_handle.json` and related `.entry.json' files! The old `winners.html` file now redirects to the new `authors.html` file. Renamed `bin/gen-author.sh` to `bin/output-index-author.sh`. Renamed `bin/subst.winner-index.sh` to `subst.entry-index.sh`. Renamed `bin/subst.winner-index.awk` to `subst.entry-index.awk`. Renamed `bin/manifest.entry.json.awk` to `bin/manifest.entry.json.awk`. Renamed `bin/gen-inventory.sh` to `bin/output-index-inventory.sh`. Renamed `bin/sort.gitignore` to `bin/sort.gitignore.sh`. Renamed `bin/sgi` to `bin/sgi.sh`. The core logic of converting markdown to HTML has been generalized into a new `bin/md2html.sh` tool. The `bin/readme2index.sh` tool now calls the new `bin/md2html.sh` tool to form entry's `index.html` files. The `bin/quick-readme2index.sh` tool now calls the new `bin/md2html.sh` tool, unless the `index.html` is newer than both `.entry.json` and `README.md`, to form entry `index.html` files. Increased, slightly, the speed of the `bin/quick-readme2index.sh` tool with the entry's `index.html` file does not need to be updated. The `bin/quick-readme2index.sh` tool will touch the `index.html` file, even if the `bin/md2html.sh` tool determines that the `index.html` file did not change, so that the `index.html` file will not appear out of date with respect to `.entry.json`. Slightly improved the look and feel of `index.html` files for entries. The logic of `bin/all-run.sh` has been improved. The initial processing, from first bash version check, thru the -N test, serves as the model for the `bin/readme2index.sh` tool and the `bin/quick-readme2index.sh` tool. There tools now share a common set of command line options. Changed the format of `inc/md2html.cfg` so that for a given "_file_glob_" match, options follow, one per line. The "_file_glob_" is on a line by itself. The option lines that follow must be intended: ``` [12][0-9][0-9][0-9]/README.md -H topnav=year -o bin/subst.default.sh -o bin/subst.year.sh ``` Added "-D ./" to top level markdown files in `inc/md2html.cfg`. The above intending is performed with 1 or more whitespace characters, although we use a leading tab "convention" out of deference to Makefile formats. :-) Once a new "_file_glob_" is found, the set of any previous option lines is said to have ended. The general argument processing logic now makes used of shell arrays. Added checks in the `bin/md2html.sh` tool to disallow a "_file_glob_" of . (dot) as this is used internally to help the shell process the new `inc/md2html.cfg` format. Changed `bin/all-run.sh` VERSION from "1.1.2 2024-01-20" to "1.3 2024-02-11". Changed `bin/output-index-author.sh` VERSION from "1.3.1 2024-01-16" to "1.4 2024-02-11". Changed `bin/pandoc-wrapper.sh` VERSION from "1.3.2 2024-01-19" to "1.4 2024-02-05". Changed `bin/quick-readme2index.sh` VERSION from "1.0 2024-01-20" to "1.1 2024-02-11". Changed `bin/readme2index.sh` VERSION from "1.1.1 2024-01-20" to "1.2 2024-02-11". Changed `bin/subst.default.sh` VERSION from "1.1.1 2024-01-16" to "1.2 2024-02-05". Changed `bin/subst.entry-index.sh` VERSION from "1.1.1 2024-01-16 to "1.2 2024-02-11". Changed `bin/output-index-inventory.sh` VERSION from "1.0.1 2024-01-16" to "1.1 2024-02-11". Changed `bin/manifest.entry.json.awk` from "1.0 2024-01-14" to "1.1 2024-02-11". Changed `bin/sort.gitignore.sh` from "1.0 2024-02-01" to "1.1 2024-02-11". Changed substitution symbol _%%DOCROOT_URL_SLASH%%_ to _%%DOCROOT_SLASH%%_ in various "inc/*.html" files. Moved setting of symbol _%%DOCROOT_SLASH%%_ from `bin/subst.entry-index.sh` to `bin/subst.default.sh`. Changed the variable _$DOCROOT_URL_SLASH_ to _$DOCROOT_SLASH_, in bin tools that use it, to be more descriptive. Removed `-P pandoc_opts` from `bin/*.sh` command lines. The PANDOC_WRAPPER_OPTSTR value is only used in `bin/pandoc-wrapper.sh`. Removed `-B optstr` and `-A optstr` from the `bin/md2html.sh` command line. Removed `[-O tool=optstr ..]` from the `bin/md2html.sh` command line. Removed old use of `-U top_url` from command lines. Add `-w site_url` as sort of a "replacement" for the old `-U top_url`. Added a new `-U URL` to `bin/gen-author.sh`, `bin/output-index-inventory.sh`, `bin/md2html.sh`, `bin/subst.default.sh`, and `bin/subst.entry-index.sh` to allow for the Nu HTML check can use the encoded absolute URL of the HTML page. Added `-t tagline` to most command lines. Added `-T md2html.sh` to most command lines. Added `-D docroot/` to most command lines to set DOCROOT_SLASH. The DOCROOT_SLASH value defaults to "../../" for most in tools, suitable for HTML files under a `YYYY/dir` directory, except for `bin/gen-location.sh` and `gen-entries-html.sh` (as this produces a top level HTML file) and `bin/md2html.sh` (forms files at any level) who use "./" instead. In the case of `bin/output-index-inventory.sh`, `bin/quick-readme2index.sh`, `bin/readme2index.sh`, and `bin/all-run.sh` Helped make the use of exit code in bin tools a bit more consistent. Fixed a number of typos in the bin tools. Added comments for lower level tools such as `manifest.entry.json.awk`, `bin/subst.default.sh`, `bin/subst.entry-index.sh`, and bin/`manifest.entry.json.awk` to indicate how they are usually invoked by other tools. Changed the comments that a new `bin/md2html.sh` tool (that was the `bin/readme2index.sh` tool) would add to a entry's `index.html` file. No longer will it add the tool version number to the comment. Thus, a change in tool version will not force all entry `index.html` files to be modified. Now both the tool adds two comments, one is the _tagline_ to indicate how the markdown content was generated, and one for the new `bin/md2html.sh` tool. For example: ``` <!-- The original markdown content was formed by the tool: bin/quick-readme2index.sh --> <!-- The HTML was converted from markdown by the tool: bin/md2html.sh --> ``` Improve the debugging, especially in regards to changing important exported shell variables, in `bin/md2html.sh`. Other bin tools have their exported shell variables improved somewhat as well. The `bin/README.md` now describes the general _converting markdown to HTML_ procedure including _getopt phases_ and _HTML phases_. Content from `inc/md2html.cfg` and `bin/readme2index.sh` that related to this topic has been centralized into the `bin/README.md` file. Improved formatting of the `bin/README.md` file. Updated it as needed according to the above. Sorted `2011/.year`, `2018/.year`, and `2019/.year` to be in dictionary order. Adjusted ${WINNERS} in year Makefile to use dictionary order so that `make genpath` will produce `.year` files in dictionary order. FYI: We tested this massive set of changes as best as we could. Nevertheless we might have missing something in the JSON changes, `.entry.json` renames, manifest updates, code comments, etc.
This commit is contained in:
1 parent
b23ab491ca
commit
aedb017223
897 files changed
+29985
-27475
No files matched your search
+236
-52
@@ -30,14 +30,37 @@ bin/all-run.sh -v 3 bin/readme2index.sh -v 1
|
||||
```
|
||||
|
||||
|
||||
### [gen-author.sh](gen-author.sh)
|
||||
### [gen-authors.sh](gen-authors.sh)
|
||||
|
||||
Output winning author(s) Related HTML.
|
||||
Generate the top level `/authors.html` page.
|
||||
|
||||
Usage:
|
||||
|
||||
```sh
|
||||
bin/gen-authors.sh -v 1
|
||||
```
|
||||
|
||||
|
||||
### [gen-inventory.sh](gen-inventory.sh)
|
||||
### [gen-location.sh](gen-location.sh)
|
||||
|
||||
Output the inventory in HTML form for a winner index.html page.
|
||||
Generate the top level `/location.html` page.
|
||||
|
||||
Usage:
|
||||
|
||||
```sh
|
||||
bin/gen-location.sh -v 1
|
||||
```
|
||||
|
||||
|
||||
### [gen-years.sh](gen-years.sh)
|
||||
|
||||
Generate the top level `/years.html` page.
|
||||
|
||||
Usage:
|
||||
|
||||
```sh
|
||||
bin/gen-years.sh -v 1
|
||||
```
|
||||
|
||||
|
||||
### [ioccc-status.sh](ioccc-status)
|
||||
@@ -45,9 +68,29 @@ Output the inventory in HTML form for a winner index.html page.
|
||||
Updates the [status.json](/status.json) file.
|
||||
|
||||
|
||||
### [manifest.winner.json.awk](manifest.winner.json.awk)
|
||||
### [manifest.entry.json.awk](manifest.entry.json.awk)
|
||||
|
||||
Output manifest table from a winner .winner.json file.
|
||||
Output manifest table from a entry .winner.json file.
|
||||
|
||||
|
||||
### [md2html.sh](md2html.sh)
|
||||
|
||||
This is the primary tool that forms IOCCC generated HTML content from
|
||||
markdown files (permanent markdown files or temporarily generated
|
||||
markdown files) and HTML fragments from the [inc](/inc) directory.
|
||||
|
||||
The [../inc/md2html.cfg](../inc/md2html.cfg) configuration file is
|
||||
used by [md2html.sh](md2html.sh) to drive the generation process.
|
||||
|
||||
|
||||
### [output-index-author.sh](output-index-author.sh)
|
||||
|
||||
Output author(s) Related HTML for for an entry's index.html page.
|
||||
|
||||
|
||||
### [output-index-inventory.sh](output-index-inventory.sh)
|
||||
|
||||
Output the inventory in HTML form for an entry's index.html page.
|
||||
|
||||
|
||||
### [pandoc-wrapper.sh](pandoc-wrapper.sh)
|
||||
@@ -57,16 +100,16 @@ Wrapper tool to run pandoc.
|
||||
|
||||
### [quick-readme2index.sh](quick-readme2index.sh)
|
||||
|
||||
Runs [readme2index.sh](readme2index.sh) if the winner directory
|
||||
Runs [readme2index.sh](readme2index.sh) if the entry directory
|
||||
does not have a non-empty `index.hmtl` file, or if either
|
||||
`.winner.json` or `README.md` is newer than the `index.hmtl` file.
|
||||
|
||||
This is useful when only a few winners have been
|
||||
This is useful when only a few entries have been
|
||||
modified (resulting in an updated `.winner.json` file)
|
||||
or if the `README.md` of a few winners have been changed.
|
||||
or if the `README.md` of a few entries have been changed.
|
||||
|
||||
While the [readme2index.sh](readme2index.sh) take a few
|
||||
seconds to run, when applied to 300+ winners,
|
||||
seconds to run, when applied to 300+ entries,
|
||||
the extra time can add up.
|
||||
|
||||
If only a few `index.hmtl` files need updating, then
|
||||
@@ -88,10 +131,10 @@ bin/all-run.sh -v 3 bin/readme2index.sh -v 1
|
||||
|
||||
### [readme2index.sh](readme2index.sh)
|
||||
|
||||
Convert README.md into index.html.
|
||||
Convert a entry README.md into entry directory index.html.
|
||||
|
||||
|
||||
### [sgi](sgi)
|
||||
### [sgi.sh](sgi.sh)
|
||||
|
||||
Sort .gitignore content from stdin to stdout.
|
||||
|
||||
@@ -100,21 +143,23 @@ We sort with lines starting with * second.
|
||||
We sort with lines that do not start with [#!*] third.
|
||||
We sort with lines starting with ! fourth.
|
||||
|
||||
This tool is used by [sort.gitignore.sh](sort.gitignore.sh).
|
||||
|
||||
### [sort.gitignore](sort.gitignore)
|
||||
|
||||
Sort a .gitignore in a winner directory.
|
||||
### [sort.gitignore.sh](sort.gitignore.sh)
|
||||
|
||||
Sort a .gitignore in a entry directory.
|
||||
|
||||
Usage:
|
||||
|
||||
```sh
|
||||
bin/sort.gitignore -v 1 YYYY/dir
|
||||
bin/sort.gitignore.sh -v 1 YYYY/dir
|
||||
```
|
||||
|
||||
Suggested usage:
|
||||
|
||||
```sh
|
||||
bin/all-run.sh bin/sort.gitignore -v 1
|
||||
bin/all-run.sh bin/sort.gitignore.sh -v 1
|
||||
```
|
||||
|
||||
|
||||
@@ -123,30 +168,67 @@ bin/all-run.sh bin/sort.gitignore -v 1
|
||||
Print default substitutions.
|
||||
|
||||
|
||||
### [subst.winner-index.sh](subst.winner-index.sh)
|
||||
### [subst.entry-index..sh](subst.entry-index..sh)
|
||||
|
||||
Print substitutions for a winner index.html.
|
||||
Print substitutions for a entry index.html.
|
||||
|
||||
|
||||
### [subst.winner-navbar.awk](subst.winner-navbar.awk)
|
||||
### [subst.entry-navbar.awk](subst.entry-navbar.awk)
|
||||
|
||||
Output substitutions for navbar on behalf of a winner.
|
||||
Output substitutions for navbar on behalf of a entry.
|
||||
|
||||
|
||||
## How HTML content is built
|
||||
# <a name="how"></a>How IOCCC HTML content is built
|
||||
|
||||
Files under the [inc](../inc/README.md) directory contain HTML fragments that the
|
||||
tools in the [bin](README.md) directory
|
||||
tools use to form HTML content for the [official IOCCC web site](https://www.ioccc.org).
|
||||
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
|
||||
site](https://www.ioccc.org).
|
||||
|
||||
The canonical way that HTML content is built uses, by default, files of the form:
|
||||
Nearly all IOCCC related HTML pages are built from markdown files,
|
||||
from either permanent markdown files or temporary generated markdown files,
|
||||
as well as HTML fragments from the [inc](../inc/README.md) directory.
|
||||
|
||||
Most HTML content is built from permanant markdown files, such as a `README.md`
|
||||
markdown file found in each entry directory. Some HTML content are generated
|
||||
from temporary markdown files. These temporary markdown files are produced by
|
||||
tools in the [bin](README.md) directory and exist only while the tool is running.
|
||||
|
||||
In addition to converting markdown to HTML, the canonical way that HTML content is
|
||||
built uses, by default, files from the [inc](../inc/README.md) directory, of the form:
|
||||
|
||||
```
|
||||
*.default.html
|
||||
```
|
||||
|
||||
By using command line options of the form
|
||||
|
||||
### HTML phases
|
||||
```sh
|
||||
-H phase=name
|
||||
```
|
||||
|
||||
where `phase` is the name of an HTML phase,
|
||||
a non-default file may be used. For example:
|
||||
|
||||
```sh
|
||||
-H topnav=up2index
|
||||
```
|
||||
|
||||
will cause [inc/topnav.up2index.html](../inc/topnav.up2index.html)
|
||||
instead of [inc/topnav.default.html](../inc/topnav.default.html) to be
|
||||
used during the _topnav_ HTML phase.
|
||||
|
||||
If _name_ is dot (i.e., "."), then the given HTML phase is skipped.
|
||||
For example:
|
||||
|
||||
```sh
|
||||
-H footer=.
|
||||
```
|
||||
|
||||
will cause no HTML content to be produced during the _footer_ HTML phase.
|
||||
|
||||
|
||||
|
||||
## <a name="html"></a>HTML phases
|
||||
|
||||
The following HTML phase files are used to build HTML content:
|
||||
|
||||
@@ -186,7 +268,108 @@ See the tool [readme2index.sh](readme2index.sh) for an example of
|
||||
how HTML phases are implemented.
|
||||
|
||||
|
||||
### Tool command line
|
||||
## <a name="getopt"></a>Getopt phase processing of the command line
|
||||
|
||||
The command options are evaluated in the following getopt phases:
|
||||
|
||||
|
||||
### Getopt phase 0
|
||||
|
||||
In getopt phase 0 we parse command line options and save all arguments for the end of the final command line.
|
||||
|
||||
Depending on the program, the argument at the end is directory under topdir, or it is a file under topdir.
|
||||
|
||||
In getopt phase 0 is the only getopt phase where "-d topdir" and "-c md2html.cfg" may be used.
|
||||
|
||||
|
||||
### Getopt phase 1
|
||||
|
||||
In getopt phase 1 we execute each -o "output tool" from getopt phase 0, parsing the output as a command line.
|
||||
|
||||
The -o "output tool" may be given optstr from "-O tool=optstr", followed by the phase 0 argument.
|
||||
|
||||
The -o "output tool" is not allowed to output another "-o tool", nor a "-O tool=optstr".
|
||||
Instead an -o "output tool" may execute another -o "output tool" merge the output into its own.
|
||||
|
||||
|
||||
### Getopt phase 2
|
||||
|
||||
In getopt phase 2 we parse the "cfg_options" from the first "md2html.cfg" line matched by saved argument.
|
||||
|
||||
The match is made with the (possibly modified) phase 0 argument.
|
||||
|
||||
|
||||
### Getopt phase 3
|
||||
|
||||
In getopt phase 3 we execute each -o "output tool" from getopt phase 2, parsing the output as a command line.
|
||||
|
||||
The -o "output tool" may be given optstr from "-O tool=optstr", followed by the phase 0 argument.
|
||||
|
||||
The -o "output tool" is not allowed to output another "-o tool", nor a "-O tool=optstr".
|
||||
Instead an -o "output tool" may execute another -o "output tool" merge the output into its own.
|
||||
|
||||
|
||||
### Command line option order
|
||||
|
||||
Most command line options override earlier copies of the same option. However in the case of
|
||||
'-H phase=name', later '-H phase=name' only overrides an earlier use of '-H' for the same 'phase' only.
|
||||
Also in the case of '-s token=value', later '-s token=value' only overrides an earlier use of '-s'
|
||||
for the same 'token' only.
|
||||
|
||||
|
||||
### Output tools
|
||||
|
||||
An "output tool" may be used to add certain additional command line options to be processed.
|
||||
|
||||
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:
|
||||
|
||||
```
|
||||
-s TITIE='IOCCC entry locations' -H topnav=top-of-site
|
||||
```
|
||||
|
||||
The "output tool" would output the following 4 lines:
|
||||
|
||||
```
|
||||
-s
|
||||
TITIE='IOCCC entry locations'
|
||||
-H
|
||||
topnav=top-of-site
|
||||
```
|
||||
|
||||
The command line opions printed by an "output tool" are processed
|
||||
after all command line options, and all options from a matching
|
||||
line from the md2html.cfg file, and before any filename arguments
|
||||
on the command line.
|
||||
|
||||
For exmaple:
|
||||
|
||||
```
|
||||
command [command_options ..] [cfg_options ..] [output_tool_options ..] [--] [filename_arg ..]
|
||||
```
|
||||
|
||||
Here the 'command' first processes any command line options, then
|
||||
it processes 'cfg_options' obtained from this file from a 1st match of a given file_glob, then
|
||||
it processes 'output tool' (i.e., -o tool) options found in 'command_options', and 'cfg_options', then
|
||||
an optional -- (end of all options), then zero of more 'filename_arg' filename arguments.
|
||||
|
||||
The '-o tool' must NOT output any '-o tool' options as '-o tool' is NOT RECURSIVE. A '-o tool' is free, however,
|
||||
to execute other '-o tool' output tools and merge the output from those tools into its own.
|
||||
|
||||
|
||||
### Special -E exitcode option
|
||||
|
||||
When '-E exitcode' is evaluated, the application will exit with the 'exitcode' value. If one wishes to also
|
||||
output a message to stderr, the '-e string' must come BEFORE any '-E exitcode' in the command line.
|
||||
|
||||
|
||||
### Substitution tokens
|
||||
|
||||
All tokens (i.e., strings of the form '%%token%%') MUST be substituted (by some -s token=value)
|
||||
in all HTML output, except during phase numbers 20-29 (i.e., except 'before tool' output, pandoc wrapper output,
|
||||
and except 'after tool' output), or command will exit non-zero, unless -S is given. If -S is given,
|
||||
only a warning about un-substituted tokens will be written to stderr.
|
||||
|
||||
|
||||
The command line of tools in the [bin](README.md) directory,
|
||||
and perhaps modified via [md2html config file](../inc/md2html.cfg) file may change
|
||||
@@ -197,7 +380,7 @@ a different "topnav" navigation bar is needed. So instead of the
|
||||
usual top navigation bar that normally directs people to the previous
|
||||
entry for the year, or go up to the year page, or to the next entry
|
||||
for the year, a top navigation bar to just go up to the entry's
|
||||
main page is needed. A line the [md2html config file](../inc/md2html.cfg) file
|
||||
main page is needed. A line in the [md2html config file](../inc/md2html.cfg) file
|
||||
that refers to `2020/ferguson1/chocolate-cake.md` may specify use
|
||||
of `topnav.up2index.html` instead of using the `topnav.default.html` default.
|
||||
|
||||
@@ -209,7 +392,7 @@ See also, the tool [readme2index.sh](readme2index.sh) for an example of
|
||||
how such command lines are used.
|
||||
|
||||
|
||||
## Use CAUTION when modifying inc files
|
||||
# Use CAUTION when modifying inc files
|
||||
|
||||
Some of the files under this directory are used to form **MOST** of the HTML content
|
||||
on the [official IOCCC web site](https://www.ioccc.org).
|
||||
@@ -230,14 +413,14 @@ consider making a copy of the default file and modifying the [md2html config fil
|
||||
not impact **MOST** of the HTML content.
|
||||
|
||||
|
||||
## Why do we do not use certain well know HTML technology
|
||||
# Why do we do not use certain well-known HTML technologies
|
||||
|
||||
You may wonder why we need these files in the first place.
|
||||
You may wonder why we even need the tools in the [bin](README.md) directory
|
||||
when there other solutions available to form web pages.
|
||||
|
||||
|
||||
### <a name="static-only"></a>Static web pages only
|
||||
## <a name="static-only"></a>Static web pages only
|
||||
|
||||
Here are some reasons why we are using these files and
|
||||
special tools to create HTML content / IOCCC web pages:
|
||||
@@ -246,23 +429,23 @@ We host [official IOCCC web site](https://www.ioccc.org) via [GitHub pages](http
|
||||
As of the time this file written, **only static web pages are supported**.
|
||||
|
||||
|
||||
### Cannot use server side include
|
||||
## We cannot use server side include
|
||||
|
||||
We use [static web pages](#static-only), so use of "server side include" is not available to the IOCCC.
|
||||
|
||||
For example, Apache SSI "#include" does not work on [GitHub pages](https://pages.github.com).
|
||||
|
||||
|
||||
### Cannot use a back-end database
|
||||
## We cannot use a back-end database
|
||||
|
||||
We use [static web pages](#static-only), so use of "back-end database" is not available to the IOCCC.
|
||||
|
||||
|
||||
### <a name="why-github"></a>Cannot use non-GitHub web servers
|
||||
## <a name="why-github"></a>We cannot use non-GitHub web servers
|
||||
|
||||
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)
|
||||
that happens when a IOCCC winners are published.
|
||||
that happens when a IOCCC entries are published.
|
||||
|
||||
Most so-called low cost web hosting sites have a somewhat hidden excessive bandwidth charge
|
||||
and/or cap bandwidth when the volume gets too high, and/or do not have the infrastructure
|
||||
@@ -279,7 +462,7 @@ with some supporting documentation. As such it is a natural fit for GitHub and
|
||||
[GitHub pages](https://pages.github.com).
|
||||
|
||||
|
||||
### cannot use the HTML object tag
|
||||
## We cannot use the HTML object tag
|
||||
|
||||
The _<_ object _>_ HTML tag does not work for our needs.
|
||||
|
||||
@@ -288,7 +471,7 @@ HTML tag does not extend into the content that the tag includes.
|
||||
For example, menu bars will not operate as specified by the [ioccc CSS](../ioccc.css).
|
||||
|
||||
|
||||
### cannot use the HTML embed tag
|
||||
## We cannot use the HTML embed tag
|
||||
|
||||
The _<_ embed _>_ HTML tag does not work for our needs.
|
||||
|
||||
@@ -301,7 +484,7 @@ Specifying a _width_ and _height_ in pixels will not work well in
|
||||
all of those screen size contexts.
|
||||
|
||||
|
||||
### cannot use the HTML iframe tag
|
||||
## We cannot use the HTML iframe tag
|
||||
|
||||
The _<_ iframe _>_ HTML tag does not work for our needs.
|
||||
|
||||
@@ -314,7 +497,7 @@ Specifying a _width_ and _height_ in pixels will not work well in
|
||||
all of those screen size contexts.
|
||||
|
||||
|
||||
### cannot use JavaScript to include content
|
||||
## We cannot use JavaScript to include content
|
||||
|
||||
We do not use JavaScript to include HTML content.
|
||||
|
||||
@@ -327,10 +510,9 @@ The IOCCC will **NOT MANDATE USE OF JavaScript** to view [official IOCCC web sit
|
||||
For this reason, we cannot use JavaScript include HTML content.
|
||||
|
||||
|
||||
# terms
|
||||
# <a name="terms"></a>IOCCC terms
|
||||
|
||||
The following terms apply to tools, JSON files, and the directory structure
|
||||
of this repo.
|
||||
The following IOCCC terms apply to tools, JSON files, and the directory structure of this repo.
|
||||
|
||||
|
||||
## `author`
|
||||
@@ -400,20 +582,22 @@ Anonymous_[0-9][0-9][0-9][0-9][.0-9]*$
|
||||
```
|
||||
|
||||
|
||||
## `winner`
|
||||
## `entry`
|
||||
|
||||
An IOCCC entry that won an award for given IOCCC.
|
||||
|
||||
A `winner` has one more more `author`s.
|
||||
A `entry` has one more more `author`s.
|
||||
|
||||
Each `winner` is contained under its own directory. The parent of the winner directory
|
||||
Each `entry` is contained under its own directory. The parent of the entry directory
|
||||
is the year's directory.
|
||||
|
||||
While in most cases a `winner` consists of files under a `winner` directory,
|
||||
there are a few cases where a `winner` directory contains subdirectories.
|
||||
While in most cases a `entry` consists of files under a entry's directory,
|
||||
there are a few cases where a `entry` directory contains subdirectories.
|
||||
|
||||
Use of subdirectories under a `winner` directory is discouraged and
|
||||
may be limited to previous `winner`s that used them.
|
||||
Use of subdirectories under a `entry` directory is discouraged and
|
||||
may be limited to previous `entry`s that used them.
|
||||
|
||||
NOTE: In the past, the term _winner_ was used in instead of today's term of _entry_.
|
||||
|
||||
|
||||
## `year`
|
||||
@@ -445,7 +629,7 @@ instance, [2020/.year](/2020/.year) has the string: `2020`.
|
||||
|
||||
## `dir`
|
||||
|
||||
A `dir` is a POSIX safe string that holds an winner.
|
||||
A `dir` is a POSIX safe string that holds an entry.
|
||||
|
||||
A `dir` is a string that matches this regexp:
|
||||
|
||||
@@ -453,11 +637,11 @@ A `dir` is a string that matches this regexp:
|
||||
^[a-z][0-9a-z.-]*$
|
||||
```
|
||||
|
||||
Each `winner` is under its own individual directory. This directory
|
||||
Each `_entry_ is under its own individual directory. This directory
|
||||
is directly under a `year` directory.
|
||||
|
||||
|
||||
### `winner_id`
|
||||
### `entry_id`
|
||||
|
||||
A string that identifies the winning entry. The string is of the form:
|
||||
|
||||
|
||||
Reference in new issue
Block a user