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: > <h3>Welcome!</h3> This is the <strong>most awesome site</strong> on the entire internet. The `homepagetext` item is the raw html code which is put on the index.html code. the `tags` and `breadcrumbs` are used to define if tags and breadcrumbs should be generated and placed or not. ### Requirements * python 2.7+ (fully Python 3 compatible) * [Sundown/Misaka][2] * dateutils * [pyyaml][3] The minification also requires the `cssmin` and `htmlmin.minify` modules. It is fully threaded, minifying at least 4 pages at once. To install them in a standard ubuntu/debian: sudo apt-get install python-pip and then: sudo pip install misaka pyyaml dateutils [1]: https://raymii.org/s/tags/ingsoc.html [2]: https://github.com/FSX/misaka [3]: http://pyyaml.org/ --- License: All the text on this website is free as in freedom unless stated otherwise. This means you can use it in any way you want, you can copy it, change it the way you like and republish it, as long as you release the (modified) content under the same license to give others the same freedoms you've got and place my name and a link to this site with the article as source. This site uses Google Analytics for statistics and Google Adwords for advertisements. You are tracked and Google knows everything about you. Use an adblocker like ublock-origin if you don't want it. All the code on this website is licensed under the GNU GPL v3 license unless already licensed under a license which does not allows this form of licensing or if another license is stated on that page / in that software: This program is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. Just to be clear, the information on this website is for meant for educational purposes and you use it at your own risk. I do not take responsibility if you screw something up. Use common sense, do not 'rm -rf /' as root for example. If you have any questions then do not hesitate to contact me. See https://raymii.org/s/static/About.html for details.