Introduction
Introduction Statistics Contact Development Disclaimer Help
~README.md and data/README.md Remove bmake and CLISP references.…
git clone git://bitreich.org/cl-yag/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws…
Log
Files
Refs
Tags
README
LICENSE
---
commit 707f5e747aa837657993f852439c99063a416cf6
parent 2a146ce064617e43c80f9c41ceef007843bea20d
Author: lambda <[email protected]>
Date: Wed, 29 Nov 2017 11:33:19 +0100
~README.md and data/README.md Remove bmake and CLISP references.
Correct spelling errors.
Add links to websites of sbcl, ecl, mul…
Add :title to data/articles.lisp sectio…
Use *bar* for *vars* and *functions* (e…
Use ``bar`` for ``:keywords``, booleans…
Use **bar** for **foo/path/** and **foo…
Status of this commit: Suggestion.
Diffstat:
M README.md | 162 +++++++++++++++--------------…
M data/README.md | 162 +++++++++++++++--------------…
2 files changed, 160 insertions(+), 164 deletions(-)
---
diff --git a/README.md b/README.md
@@ -1,9 +1,9 @@
-# README
+o# README
## Introduction
-cl-yag is a very lightweight, static site generator that produces **gopher** s…
+cl-yag is a lightweight, static-site generator that produces **gopher** sites …
The name 'cl-yag' stands for 'Common Lisp - Yet Another website Generator'.
It runs without Quicklisp.
@@ -21,20 +21,16 @@ gopher-space](gopher://dataswamp.org/1/~solene/).
To use cl-yag you'll need:
1. A Common Lisp Interpreter
- - cl-yag's current default is **Steel Bank Common Lisp (SBCL)**.
- - **Embeddable Common Lisp (ECL)** will do fine as well.
+ - cl-yag's current default is [Steel Bank Common Lisp (SBCL)](http://www.s…
+ - [Embeddable Common Lisp (ECL)](https://common-lisp.net/project/ecl/) wil…
2. A Markdown-to-HTML Converter
- - cl-yag's current default is **multimarkdown**.
-3. BSD Make
- - Linux-Users, cl-yag uses a BSD Makefile syntax, that isn't compatible wi…
- - You need to install a port of the NetBSD make tool, called **bmake**.
+ - cl-yag's current default is [multimarkdown](http://fletcherpenney.net/mu…
## Usage
-Go into your project's directory and type ``make``. You'll find your new websi…
-If you want to get rid of everything in your 'output/' subdirectories,
-type ``make clean``.
+Go into your project's directory and type ``make``. You'll find your new websi…
+If you want to get rid of everything in your **output/** subdirectories, type …
For further commands: read the Makefile.
Read in the follwing section where to find it.
@@ -73,25 +69,25 @@ least the following files and folders:
- This is cl-yag's core library.
- **static/**
- This directory holds content, that needs to be published without being c…
- - If you come from 'non-static CMS'-Country: 'static/' holds, what you…
+ - If you come from 'non-static CMS'-Country: **static/** holds, what y…
- **templates/**
- The templates in this directory provide the structural skeleton(s) of th…
- **output/**
- cl-yag puts in this directory everything ready to get deployed.
- - Because cl-yag generates not only HTML, but gopher-compliant pages a…
- - **gopher/** : contains the website for gopher,
- - **html/** : contains the website in HTML.
+ - Because cl-yag generates not only HTML, but gopher-compliant pages a…
+ - **gopher/** contains the website for gopher,
+ - **html/** contains the website in HTML.
And there is the **data/** directory, which is important enough to get a subsu…
-### The 'data/' Directory
+### The data/ Directory
This directory is crucial for the usage of cl-yag.
**data/** contains
-- the **articles.lisp configuration file**, which defines important metadata f…
-- It also holds **${id}.md**-files, which are holding your posts' and pages' c…
+- the **articles.lisp** configuration file, which defines important metadata f…
+- It also holds **${id}.md** files, which are holding your posts' (or pages') …
For more information: Read section 'Configuration'.
@@ -99,25 +95,25 @@ For more information: Read section 'Configuration'.
## Configuration
cl-yag's main configuration file is **data/articles.lisp**.
-In order to have a reliably running implementation of cl-yag, you have
+In order to have a running implementation of cl-yag, you have
to set most of the values in this file.
**data/articles.lisp** has two parts:
-1. A variable called **config**. It defines global values, that define your we…
-2. A variable called **articles**. It defines local values, that - in turn - d…
+1. A variable called *config*. Its values define your webpage.
+2. A variable called *articles*. Its values define your posts.
-Values are assigned by placing a string (e.g. "foo") or a boolean
-(i.e. 't' or 'nil') behind a keyword (e.g. ':title').
+Values are assigned by placing a string (e.g. ``"foo"``) or a boolean
+(i.e. ``t`` or ``nil``) behind a keyword (e.g. ``:title``).
-### The **config** Variable
+### The *config* Variable
-The **config** variable is used to assign the following values:
+The *config* variable is used to assign the following values:
- **:webmaster**
- The name of the default(!) author.
- - :webmaster gets used, if **:author** is omitted. (see below: 'The **…
+ - ``:webmaster`` gets used, if ``:author`` is omitted. (See below: 'Th…
- **:title**
- The title of the webpage
- **:description**
@@ -125,45 +121,49 @@ The **config** variable is used to assign the following v…
- **:url**
- This needs to be the full(!) URL of your website, including(!) a final s…
- MIND: If the url contains a tilde (~), it needs to get duplicated
- - Example: https://mydomain/~~user/ is a valid url.
+ - Example: ``https://mydomain/~~user/``
- **:rss-item-number**
- This holds the number of latest(!) RSS items you want to get published w…
- **html**
- - *t* to export html website. Set *nil* to disable.
+ - ``t`` to export html website. Set ``nil`` to disable.
- **gopher**
- - *t* to export gopher website. Set *nil* to disable.
+ - ``t`` to export gopher website. Set ``nil`` to disable.
- **gopher-path**
- This is the full path of the directory to access your gopher hole.
- **gopher-server**
- - Hostname of the gopher server. Because gopher doesn't allow relative lin…
+ - Hostname of the gopher server. It needs to be included in every link.
- **gopher-port**
- - tcp port of the gopher server. 70 is the default port. It need to be inc…
+ - tcp port of the gopher server. 70 is the default port. It needs to be in…
-### The **articles** Variable
+### The *articles* Variable
-The **articles** variable holds per page/post-metadata.
-Of the following fields, only the *:author* and *:short* description can be om…
+The *articles* variable holds post metadata.
+So you need to create an entry in the *articles* variable for each of your pos…
-- **:short**
- - The _:short_ field's value is used for displaying a really short des…
- - If _:short_ doesn't get a value, the full article gets displayed.
- - Hint: Use ``:short "view the article for the full text"``, if you do…
+Of the following keywords, only ``:author`` and ``:short`` can be omitted.
+
+- **:author**
+ - The ``:author`` field is used to display the article's author.
+ - If you omit it, the generator will take the name from the ``:webmaster``…
- **:id**
- - The _:id_ field holds the filename of your post/page.
- - Example: ``:id "2"`` will load file ``data/2.md``. Use text instead …
+ - The ``:id`` field holds the filename of your post/page.
+ - Example: ``:id "2"`` will load file **data/2.md**. Use text instead …
- (See section: 'The **data/** Directory'.)
-- **:author**
- - The _:author_ field is used to display the article' author.
- - If you omit it, the generator will take the name from the **:webmaster*…
+- **:short**
+ - The ``:short`` field's value is used for displaying a really short d…
+ - If ``:short`` doesn't get a value, the full article gets displayed.
+ - Hint: Use ``:short "view the article for the full text"``, if you do…
- **:tag**
- - _:tag_ field is used to create a "view" containing all articles of the s…
- - MIND: Whitespaces are not allowed in(!) tags.
+ - ``:tag`` field is used to create a "view" containing all articles of the…
+ - MIND: Whitespaces are used to separate tags and are not allowed in(…
+- **:title**
+ - The ``:title`` field's value sets your post's title, its first headl…
## Howto Create A New Post
-Edit data/articles.lisp and add a new list to the *articles* variable:
+Edit **data/articles.lisp** and add a new list to the *articles* variable:
(list :title "How do I use cl-yag"
:id "2"
@@ -172,30 +172,30 @@ Edit data/articles.lisp and add a new list to the *articl…
:short "I will explain how to use the generator"
:tag "example help code")
-Then write a corresponding ``2.md`` file, using markdown.
+Then write a corresponding **data/2.md** file, using markdown.
+
## Howto Publish A Post
I prepared a Makefile to facilitate the process of generating and
-publishing your static sites.
-
+publishing your static sites.
All you need to do in order to publish is to go into your cl-yag
-directory and type "make".
+directory and type ``make``.
-The 'make' command does create html and gopher files in the defined
-**output/** location (which can be a symbolic link pointing to some
-other directory, somewhere else on your machine).
+The make command creates html and gopher files in the defined location.
+The default is the **output/** directory, but you can use a symbolic link
+pointing to some other directory as well.
## Howto Add A New Page
You may want to have some dedicated pages besides the index or a post.
-To create one, edit the **generate-site** function in cl-yag's
-generator.lisp and add a function call, like this:
+To create one, edit the *generate-site* function in cl-yag's
+**generator.lisp** and add a function call, like this:
(generate "somepage.html" (load-file "data/mypage.html"))
-This will produce the file **somepage.html** in the output folder.
+This will produce **output/html/somepage.html**.
## Further Customization
@@ -204,66 +204,64 @@ This will produce the file **somepage.html** in the outpu…
cl-yags default Lisp interpreter is **sbcl**.
If you want to use a different lisp interpreter you need to set the
-variable 'LISP' to the name of your binary, when calling ``make``.
+variable *LISP* to the name of your binary, when calling ``make``:
- `make LISP=ecl`
+ make LISP=ecl
### Using git Hooks For Publishing
You may customize your publishing-process further, e.g. by using a git
-hook to call 'make' after each change in the repo so your website gets
-updated automatically.
+hook to call the make program after each change in the repo so your
+website gets updated automatically.
## Page-Includes
Here is an example code, if you want to include another page in the template:
-1. Create **template/panel.tpl** with the html you want to include.
-2. Add a string in the target file, where the replacement should occur.
- In this case, we choose **%%Panel%%** for a string, and, because we want th…
+1. Create **templates/panel.tpl** containing the html you want to include.
+2. Add a replacement-string in the target file, where the replacement should o…
+ In this case, we choose **%%Panel%%** for a string, and, because we want th…
3. Modify the function *generate-layout* in cl-yag's **generator.lisp** accord…
This is done by adding the following template function call:
- "**(template "%%Panel%%" (load-file "template/panel.tpl"))**"
-
-(Note: You can insert your text directly into the layout template file
-as well.)
+ (template "%%Panel%%" (load-file "templates/panel.tpl"))
+Another valid approach is to writer your html directly into **templates/layout…
## Known Limitations
### Use ~~ To Create ~
-cl-yag crashes if you use a single "**~**" caracter inside one data
-structure in **articles.lisp** files, because Common Lisp employs the
-tilde as a prefix to indicate format specifiers in format strings.
+cl-yag crashes if you use a single "~" character inside
+**templates/articles.lisp**, because Common Lisp employs the tilde as a
+prefix to indicate format specifiers in format strings.
-In order to use a literal `~` - e.g. for creating a :title or :url
-reference - you have to **escape** the tilde **by duplicating** it:
-``~~``.
-(See _:url_ in section 'Configuration').
+In order to use a literal `~` -- e.g. for creating a ``:title`` or
+``:url`` reference -- you have to *escape* the tilde *by
+duplicating* it: ``~~``. (See ``:url`` in section 'Configuration').
### Posting Without Tagging
-cl-yag allows posts to be 'untagged'- but with the default template
-you'll get a line below your title that displays: "Tags: ".
+cl-yag allows posts without tags, but, using the default
+**templates/layout.tpl**, you'll get a line below your title that
+displays: "Tags: ".
(Note: If you are looking for a way to contribute this may be a task for you.)
### A Note On Themes
-Although cl-yag **may** ship with a **minimalistic** template, cl-yag
-focuses only on generating html- and gopher-compliant structural
-markup - not themed layouts.
+Although cl-yag may ship with a minimalistic template, cl-yag focuses
+on generating html- and gopher-compliant structural markup - not
+themed layouts.
If you want some deeply refined, cross-browser compatible, responsive,
-webscale style-sheet, you need to create it yourself.
-However, cl-yag will work nicely with it and if you want to make your
+webscale style sheets, you need to create them yourself. However,
+cl-yag will work nicely with them and if you want to make your
stylesheets a part of cl-yag you're very welcome to contact me.
@@ -275,4 +273,4 @@ If you want to contribute, feel free to contact me and/or t…
- If you are looking for a way to contribute:
- You could find a way to "sanitize" cl-yag's behaviour regarding the tild…
- Also see: 'Note' in 'Posting Without Tagging';
- - Also see: 'A Note On Themes.
+ - Also see: 'A Note On Themes'.
diff --git a/data/README.md b/data/README.md
@@ -1,9 +1,9 @@
-# README
+o# README
## Introduction
-cl-yag is a very lightweight, static site generator that produces **gopher** s…
+cl-yag is a lightweight, static-site generator that produces **gopher** sites …
The name 'cl-yag' stands for 'Common Lisp - Yet Another website Generator'.
It runs without Quicklisp.
@@ -21,20 +21,16 @@ gopher-space](gopher://dataswamp.org/1/~solene/).
To use cl-yag you'll need:
1. A Common Lisp Interpreter
- - cl-yag's current default is **Steel Bank Common Lisp (SBCL)**.
- - **Embeddable Common Lisp (ECL)** will do fine as well.
+ - cl-yag's current default is [Steel Bank Common Lisp (SBCL)](http://www.s…
+ - [Embeddable Common Lisp (ECL)](https://common-lisp.net/project/ecl/) wil…
2. A Markdown-to-HTML Converter
- - cl-yag's current default is **multimarkdown**.
-3. BSD Make
- - Linux-Users, cl-yag uses a BSD Makefile syntax, that isn't compatible wi…
- - You need to install a port of the NetBSD make tool, called **bmake**.
+ - cl-yag's current default is [multimarkdown](http://fletcherpenney.net/mu…
## Usage
-Go into your project's directory and type ``make``. You'll find your new websi…
-If you want to get rid of everything in your 'output/' subdirectories,
-type ``make clean``.
+Go into your project's directory and type ``make``. You'll find your new websi…
+If you want to get rid of everything in your **output/** subdirectories, type …
For further commands: read the Makefile.
Read in the follwing section where to find it.
@@ -73,25 +69,25 @@ least the following files and folders:
- This is cl-yag's core library.
- **static/**
- This directory holds content, that needs to be published without being c…
- - If you come from 'non-static CMS'-Country: 'static/' holds, what you…
+ - If you come from 'non-static CMS'-Country: **static/** holds, what y…
- **templates/**
- The templates in this directory provide the structural skeleton(s) of th…
- **output/**
- cl-yag puts in this directory everything ready to get deployed.
- - Because cl-yag generates not only HTML, but gopher-compliant pages a…
- - **gopher/** : contains the website for gopher,
- - **html/** : contains the website in HTML.
+ - Because cl-yag generates not only HTML, but gopher-compliant pages a…
+ - **gopher/** contains the website for gopher,
+ - **html/** contains the website in HTML.
And there is the **data/** directory, which is important enough to get a subsu…
-### The 'data/' Directory
+### The data/ Directory
This directory is crucial for the usage of cl-yag.
**data/** contains
-- the **articles.lisp configuration file**, which defines important metadata f…
-- It also holds **${id}.md**-files, which are holding your posts' and pages' c…
+- the **articles.lisp** configuration file, which defines important metadata f…
+- It also holds **${id}.md** files, which are holding your posts' (or pages') …
For more information: Read section 'Configuration'.
@@ -99,25 +95,25 @@ For more information: Read section 'Configuration'.
## Configuration
cl-yag's main configuration file is **data/articles.lisp**.
-In order to have a reliably running implementation of cl-yag, you have
+In order to have a running implementation of cl-yag, you have
to set most of the values in this file.
**data/articles.lisp** has two parts:
-1. A variable called **config**. It defines global values, that define your we…
-2. A variable called **articles**. It defines local values, that - in turn - d…
+1. A variable called *config*. Its values define your webpage.
+2. A variable called *articles*. Its values define your posts.
-Values are assigned by placing a string (e.g. "foo") or a boolean
-(i.e. 't' or 'nil') behind a keyword (e.g. ':title').
+Values are assigned by placing a string (e.g. ``"foo"``) or a boolean
+(i.e. ``t`` or ``nil``) behind a keyword (e.g. ``:title``).
-### The **config** Variable
+### The *config* Variable
-The **config** variable is used to assign the following values:
+The *config* variable is used to assign the following values:
- **:webmaster**
- The name of the default(!) author.
- - :webmaster gets used, if **:author** is omitted. (see below: 'The **…
+ - ``:webmaster`` gets used, if ``:author`` is omitted. (See below: 'Th…
- **:title**
- The title of the webpage
- **:description**
@@ -125,45 +121,49 @@ The **config** variable is used to assign the following v…
- **:url**
- This needs to be the full(!) URL of your website, including(!) a final s…
- MIND: If the url contains a tilde (~), it needs to get duplicated
- - Example: https://mydomain/~~user/ is a valid url.
+ - Example: ``https://mydomain/~~user/``
- **:rss-item-number**
- This holds the number of latest(!) RSS items you want to get published w…
- **html**
- - *t* to export html website. Set *nil* to disable.
+ - ``t`` to export html website. Set ``nil`` to disable.
- **gopher**
- - *t* to export gopher website. Set *nil* to disable.
+ - ``t`` to export gopher website. Set ``nil`` to disable.
- **gopher-path**
- This is the full path of the directory to access your gopher hole.
- **gopher-server**
- - Hostname of the gopher server. Because gopher doesn't allow relative lin…
+ - Hostname of the gopher server. It needs to be included in every link.
- **gopher-port**
- - tcp port of the gopher server. 70 is the default port. It need to be inc…
+ - tcp port of the gopher server. 70 is the default port. It needs to be in…
-### The **articles** Variable
+### The *articles* Variable
-The **articles** variable holds per page/post-metadata.
-Of the following fields, only the *:author* and *:short* description can be om…
+The *articles* variable holds post metadata.
+So you need to create an entry in the *articles* variable for each of your pos…
-- **:short**
- - The _:short_ field's value is used for displaying a really short des…
- - If _:short_ doesn't get a value, the full article gets displayed.
- - Hint: Use ``:short "view the article for the full text"``, if you do…
+Of the following keywords, only ``:author`` and ``:short`` can be omitted.
+
+- **:author**
+ - The ``:author`` field is used to display the article's author.
+ - If you omit it, the generator will take the name from the ``:webmaster``…
- **:id**
- - The _:id_ field holds the filename of your post/page.
- - Example: ``:id "2"`` will load file ``data/2.md``. Use text instead …
+ - The ``:id`` field holds the filename of your post/page.
+ - Example: ``:id "2"`` will load file **data/2.md**. Use text instead …
- (See section: 'The **data/** Directory'.)
-- **:author**
- - The _:author_ field is used to display the article' author.
- - If you omit it, the generator will take the name from the **:webmaster*…
+- **:short**
+ - The ``:short`` field's value is used for displaying a really short d…
+ - If ``:short`` doesn't get a value, the full article gets displayed.
+ - Hint: Use ``:short "view the article for the full text"``, if you do…
- **:tag**
- - _:tag_ field is used to create a "view" containing all articles of the s…
- - MIND: Whitespaces are not allowed in(!) tags.
+ - ``:tag`` field is used to create a "view" containing all articles of the…
+ - MIND: Whitespaces are used to separate tags and are not allowed in(…
+- **:title**
+ - The ``:title`` field's value sets your post's title, its first headl…
## Howto Create A New Post
-Edit data/articles.lisp and add a new list to the *articles* variable:
+Edit **data/articles.lisp** and add a new list to the *articles* variable:
(list :title "How do I use cl-yag"
:id "2"
@@ -172,30 +172,30 @@ Edit data/articles.lisp and add a new list to the *articl…
:short "I will explain how to use the generator"
:tag "example help code")
-Then write a corresponding ``2.md`` file, using markdown.
+Then write a corresponding **data/2.md** file, using markdown.
+
## Howto Publish A Post
I prepared a Makefile to facilitate the process of generating and
-publishing your static sites.
-
+publishing your static sites.
All you need to do in order to publish is to go into your cl-yag
-directory and type "make".
+directory and type ``make``.
-The 'make' command does create html and gopher files in the defined
-**output/** location (which can be a symbolic link pointing to some
-other directory, somewhere else on your machine).
+The make command creates html and gopher files in the defined location.
+The default is the **output/** directory, but you can use a symbolic link
+pointing to some other directory as well.
## Howto Add A New Page
You may want to have some dedicated pages besides the index or a post.
-To create one, edit the **generate-site** function in cl-yag's
-generator.lisp and add a function call, like this:
+To create one, edit the *generate-site* function in cl-yag's
+**generator.lisp** and add a function call, like this:
(generate "somepage.html" (load-file "data/mypage.html"))
-This will produce the file **somepage.html** in the output folder.
+This will produce **output/html/somepage.html**.
## Further Customization
@@ -204,66 +204,64 @@ This will produce the file **somepage.html** in the outpu…
cl-yags default Lisp interpreter is **sbcl**.
If you want to use a different lisp interpreter you need to set the
-variable 'LISP' to the name of your binary, when calling ``make``.
+variable *LISP* to the name of your binary, when calling ``make``:
- `make LISP=ecl`
+ make LISP=ecl
### Using git Hooks For Publishing
You may customize your publishing-process further, e.g. by using a git
-hook to call 'make' after each change in the repo so your website gets
-updated automatically.
+hook to call the make program after each change in the repo so your
+website gets updated automatically.
## Page-Includes
Here is an example code, if you want to include another page in the template:
-1. Create **template/panel.tpl** with the html you want to include.
-2. Add a string in the target file, where the replacement should occur.
- In this case, we choose **%%Panel%%** for a string, and, because we want th…
+1. Create **templates/panel.tpl** containing the html you want to include.
+2. Add a replacement-string in the target file, where the replacement should o…
+ In this case, we choose **%%Panel%%** for a string, and, because we want th…
3. Modify the function *generate-layout* in cl-yag's **generator.lisp** accord…
This is done by adding the following template function call:
- "**(template "%%Panel%%" (load-file "template/panel.tpl"))**"
-
-(Note: You can insert your text directly into the layout template file
-as well.)
+ (template "%%Panel%%" (load-file "templates/panel.tpl"))
+Another valid approach is to writer your html directly into **templates/layout…
## Known Limitations
### Use ~~ To Create ~
-cl-yag crashes if you use a single "**~**" caracter inside one data
-structure in **articles.lisp** files, because Common Lisp employs the
-tilde as a prefix to indicate format specifiers in format strings.
+cl-yag crashes if you use a single "~" character inside
+**templates/articles.lisp**, because Common Lisp employs the tilde as a
+prefix to indicate format specifiers in format strings.
-In order to use a literal `~` - e.g. for creating a :title or :url
-reference - you have to **escape** the tilde **by duplicating** it:
-``~~``.
-(See _:url_ in section 'Configuration').
+In order to use a literal `~` -- e.g. for creating a ``:title`` or
+``:url`` reference -- you have to *escape* the tilde *by
+duplicating* it: ``~~``. (See ``:url`` in section 'Configuration').
### Posting Without Tagging
-cl-yag allows posts to be 'untagged'- but with the default template
-you'll get a line below your title that displays: "Tags: ".
+cl-yag allows posts without tags, but, using the default
+**templates/layout.tpl**, you'll get a line below your title that
+displays: "Tags: ".
(Note: If you are looking for a way to contribute this may be a task for you.)
### A Note On Themes
-Although cl-yag **may** ship with a **minimalistic** template, cl-yag
-focuses only on generating html- and gopher-compliant structural
-markup - not themed layouts.
+Although cl-yag may ship with a minimalistic template, cl-yag focuses
+on generating html- and gopher-compliant structural markup - not
+themed layouts.
If you want some deeply refined, cross-browser compatible, responsive,
-webscale style-sheet, you need to create it yourself.
-However, cl-yag will work nicely with it and if you want to make your
+webscale style sheets, you need to create them yourself. However,
+cl-yag will work nicely with them and if you want to make your
stylesheets a part of cl-yag you're very welcome to contact me.
@@ -275,4 +273,4 @@ If you want to contribute, feel free to contact me and/or t…
- If you are looking for a way to contribute:
- You could find a way to "sanitize" cl-yag's behaviour regarding the tild…
- Also see: 'Note' in 'Posting Without Tagging';
- - Also see: 'A Note On Themes.
+ - Also see: 'A Note On Themes'.
You are viewing proxied material from bitreich.org. The copyright of proxied material belongs to its original authors. Any comments or complaints in relation to proxied material should be directed to the original authors of the content concerned. Please see the disclaimer for more details.