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
55
56
57
58
59
60
61
62
|
# csg
csg is the "complicated (static) site generator".
It's a Markdown-based static site generator, which aims to be simple, small, extensible and fully POSIX-compliant.
The primary provided features are:
- Markdown conversion, supporting [the original spec](https://daringfireball.net/projects/markdown/syntax) and some common extensions like nested lists or fenced code-blocks
- Customizing the Markdown conversion, allowing you to add elements around blocks
- Customizing the resultant HTML with access to a variety of variables, including:
- word count
- (optional) git-based "created" and "edited" timestamps
- Page title and description, based on document and user-customizable format string
## Getting started
TODO
## Documentation
TODO
## Limitations and alternatives
The biggest bottleneck when using csg is the AWK-based Markdown converter.
sed isn't powerful enough for the task and POSIX-compliant C will result in enormous code.
From my research, only one other person has worked on an AWK-based converter: [Jesús Galán López](https://github.com/yiyus). His converter, [md2html.awk](https://github.com/yiyus/md2html.awk), supports only a subset of Markdown and, in my subjective opinion, isn't at all simple or extensible (though it may be faster).
However, it has been used in multiple other POSIX-compliant site generators:
- [zodiac](https://github.com/nuex/zodiac) by [Chase James](https://github.com/nuex)
- [simple-static](https://github.com/wlangstroth/simple-static) by [Will Langstroth](https://github.com/wlangstroth)
- [mksite](https://github.com/clehner/mksite) by [Charles Lehner](https://github.com/clehner)
Other POSIX-compliant site generators:
|Name|Author|Page markup|Parser|
|----|------|-----------|------|
|[ssg](https://romanzolotarev.com/ssg.html)|[Roman Zolotarev](https://romanzolotarev.com/)|Markdown|(external)|
|[rawk](https://github.com/kisom/rawk)|[Kyle Isom](https://github.com/kisom)|Markdown|(external)|
|[Pharox](https://phraxos.caffeine.computer/)|[caffeine](https://caffeine.computer/)|HTML|-|
|[makesite](https://github.com/straumer/makesite)|[Matthías Ragnarsson](https://github.com/straumer)|HTML|-|
|[suna](https://github.com/fuku77/suna)|[fuku77](https://github.com/fuku77)|Markdown|[interpreter](https://github.com/fuku77/suna/blob/main/.suna/interpreter), small subset of Markdown|
|[dwfwb](https://github.com/fault2004/dwfweb)|[Supphakit Duanghoy](https://github.com/fault2004/dwfweb)|[smu](https://github.com/Gottox/smu)|(external)|
Other shell (probably bash) site generators:
|Name|Author|Page markup|Parser|
|----|------|-----------|------|
|[sw](https://github.com/jroimartin/sw)|[Roi Martin](https://github.com/jroimartin)|HTML|-|
|[dsw](https://github.com/dfr62)|[Dan Rinaldi](https://github.com/dfr62)|Any|(external)|
|[bashblog](https://github.com/cfenollosa/bashblog)|[Carlos Fenollosa](https://github.com/cfenollosa)|Markdown|(external)|
|[utterson](https://github.com/stef/utterson)|[Stefan Marsiske](https://github.com/stef)|HTML|-|
|[vee](https://git.sdf.org/pifty/vee)|[pifty](https://git.sdf.org/pifty)|TXT|-|
|[NanoBlogger](https://nanoblogger.sourceforge.net/)|n1xt3r|HTML|-|
|[simsalabash](https://github.com/markusfisch/simsalabash)|[Markus Fisch](https://github.com/markusfisch)|HTML|-|
|[statix](https://gist.github.com/plugnburn/c2f7cc3807e8934b179e)|[plugnburn](https://gist.github.com/plugnburn)|HTML|-|
Most work directly with HTML or use an external Markdown parser.
A really good C-based parser is [lowdown](https://kristaps.bsd.lv/lowdown/) by [Kristaps Dzonsons](https://github.com/kristapsdz).
|