about summary refs log tree commit diff
path: root/strike/README
blob: 8d750c3f4c16c0318532a0c3ab409a55ee70d8b5 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
   _____ __       _ __      
  / ___// /______(_) /_____ 
  \__ \/ __/ ___/ / //_/ _ \
 ___/ / /_/ /  / / ,< /  __/
/____/\__/_/  /_/_/|_|\___/ 
============================

A static site generator that does exactly what we need it to and no more.

Strike has simple goals:
1. Read HTML page contents from files in the source folder
2. Add boilerplate (head, header, footer, etc)
3. Save to output folder

And some stretch goals:
 * Create an extra page listing all generated pages in order of creation date (newest first)
 * As above, but as an RSS feed
 * Add links to next & previous generated pages
 * Turn the extra page into a flexible component that can be added into any other page
 * Use different templates on different files
 * Markup parsing (see below)
 * More robust created/modified date handling - needs more specification (markup changes vs. template changes, caching original creation date because posix systems don't actually provide that, etc.)

strike.ini file
---------------

Strike should be passed the location of a .ini file or a directory containing a file named strike.ini. This is a text file in Python's configparser format (for now). You can see an example config file with all supported options at sample/strike.ini.

Markup
------

TBD. No markup is used at the moment.

reStructuredText fulfills most of our desires: https://docutils.sourceforge.io/rst.html
It generates <section>s and has specific markup for page titles.

Templating
----------

TBD. 

Right now, templates are just passed to Python's str.format(). You can use these variables by default:

{content} : Complete file contents.
{meta[title]} : Filename, with extension dropped.
{meta[date]} : File modification date, in HTTP header format (e.g. "Sat, 23 Oct 2021 18:28:37 GMT")

Front matter
------------

* Front matter is indicated by starting a file with a line that contains exactly three dashes and nothing else ("---\n").
* Front matter is closed by another line that containts exactly three dashes and nothing else.
* Every line between the opening and closing line should be key=value pairs.
* Front matter is stored into the 'meta' dict, so you can overwrite meta[title] or meta[date] if you want to.