This is a text-only version of the following page on https://raymii.org: --- Title : ingsoc Author : Remy van Elst Date : 02-12-2014 URL : https://raymii.org/s/software/ingsoc.html Format : Markdown/HTML --- ingsoc is a static site generator written in Python with the purpose of generating raymii.org. It differs from other static site generators because it does not create a blog-like site, but it is focused on pages and structure. It also does not use a template engine. It generates categories, pages, tags, an XML sitemap and a RSS feed. It takes markdown files with a yaml config header as input, and outputs html. I sometimes write updates on new changes in ingsoc, those articles can be found [on this page][1]. ### Usage ingsoc requires three directories and content to work. The directory structure can be as below: $ tree . |-- ci.sh |-- config.yml |-- minify.py |-- newspeak.py |-- inc | |-- css | | |-- example.css | |-- img | | |-- example.png | |-- js | | |-- example.js |-- src | |-- software | | |-- ingsoc.md | | |-- Awesome_Example_Application.md | `-- tutorials | |-- Awesome_Tutorial_1.md | |-- Tutorial_2.md |-- out | |-- everything.html | |-- feed.xml | |-- inc | | |-- css | | | |-- example.css | | |-- img | | | |-- example.png | | |-- js | | | |-- example.js | |-- index.html | |-- sitemap.xml | |-- software | | |-- ingsoc.html | | |-- Awesome_Example_Application.html | |-- tags | | |-- tag1.html | | |-- tag2.html | | |-- tag3.html | `-- tutorials | |-- Awesome_Tutorial_1.html | |-- Tutorial_2.html `-- tests |-- broken-link-check.py |-- dead-link-checker.py |-- spell-check.py |-- w3-validate.sh `-- words-to-ignore.txt I have a `src` directory with my content, which is written in markdown. The `inc` directory gets copied over to the output folder, it has the css, js, images and other static content. The `out` folder is the folder where ingsoc puts its generated html. ### Content A content item is a markdown file, with a yaml header. The header looks like this: title: "Example Title" author: "John Doe" category: "software" date: "29-06-2015" lastupdate: "05-10-2019" summary: "This is a great article about some stuff related to Lorum Ipsum. The summary of this article is even more awesome." tags: - example - lorum - ipsum - tag --- Then below the three dashes (`---`) the actual markdown content is placed. The `category` item is what also end up in the menu. The date and summary are used in the RSS. The summary is the only field which is not required. There is a post generation step in which the css and generated html are minified. The `minify: False` optional option (default is True) allows a page to be excluded from the minification. ### Configuration There is also a `config.yml` file. It looks like this: title: "Awesome Website" subtitle: "Awesome Slogan!" rootdir: "./src" outdir: "out" incfolder: "./inc" breadcrumbs: "yes" tags: "yes" rsstitle: "Awesome Website RSS Feed" rssdescr: "The Awesome Website RSS feed, all about awesome stuff" rssurl: "https://raymii.org/s/" homepagetext: >