SMOLNET PORTAL home about changes
i~README.md, data/README.md        Extensive Rework of README. ~data/articles.lisp                Corresponding change in var *articles* - cl-yag - Common Lisp Yet Another website Generator	Err	bitreich.org	70
hgit clone git://bitreich.org/cl-yag/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/cl-yag/	URL:git://bitreich.org/cl-yag/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/cl-yag/	bitreich.org	70
1Log	/scm/cl-yag/log.gph	bitreich.org	70
1Files	/scm/cl-yag/files.gph	bitreich.org	70
1Refs	/scm/cl-yag/refs.gph	bitreich.org	70
1Tags	/scm/cl-yag/tag	bitreich.org	70
1README	/scm/cl-yag/file/README.md.gph	bitreich.org	70
1LICENSE	/scm/cl-yag/file/LICENSE.gph	bitreich.org	70
i---	Err	bitreich.org	70
1commit 561ae0469c01b746c84590685e649873d3e65728	/scm/cl-yag/commit/561ae0469c01b746c84590685e649873d3e65728.gph	bitreich.org	70
1parent 7ec0da9492c2971cdeaebdbdc9fad9367e4d1e7f	/scm/cl-yag/commit/7ec0da9492c2971cdeaebdbdc9fad9367e4d1e7f.gph	bitreich.org	70
hAuthor: lambda <lambda@fnord.one>	URL:mailto:lambda@fnord.one	bitreich.org	70
iDate:   Thu, 23 Nov 2017 17:14:54 +0100	Err	bitreich.org	70
i	Err	bitreich.org	70
i~README.md, data/README.md        Extensive Rework of README.	Err	bitreich.org	70
i~data/articles.lisp                Corresponding change in var *articles*	Err	bitreich.org	70
i	Err	bitreich.org	70
iStatus of this commit: Suggestion.	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M README.md                           |     304 ++++++++++++++++++++++++-------	Err	bitreich.org	70
i  M data/README.md                      |     304 ++++++++++++++++++++++++-------	Err	bitreich.org	70
i  M data/articles.lisp                  |       8 ++++++--	Err	bitreich.org	70
i	Err	bitreich.org	70
i3 files changed, 480 insertions(+), 136 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/README.md b/README.md	/scm/cl-yag/file/README.md.gph	bitreich.org	70
i@@ -1,108 +1,278 @@	Err	bitreich.org	70
i-# Introduction	Err	bitreich.org	70
i+# README	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-cl-yag stands for Common Lisp Yet Another Generator and obviously it's written in Common Lisp. Currently, cl-yag can generate **gopher** and **html** website.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-**It needs a Common Lisp interpreter and a markdown-to-html export tool (like multimarkdown).**	Err	bitreich.org	70
i-It is regularly tested with sbcl, clisp and ecl which are free, open-source and multi-platform. You don't need quicklisp library manager.	Err	bitreich.org	70
i+## Introduction	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-**This comes with a minimalistic template**, don't expect something good looking without work. You will have to write the CSS entirely and modify the html to fit your need.	Err	bitreich.org	70
i+cl-yag is a very lightweight, 'static site'-generator that produces **gopher** sites as well as **html** websites.  	Err	bitreich.org	70
i+The name 'cl-yag' stands for 'Common Lisp - Yet Another website Generator'.  	Err	bitreich.org	70
i+It runs without Quicklisp.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-As a "demo", there is [my website](https://dataswamp.org/~solene/) using cl-yag for html version, and [my gopher](gopher://perso.pw) for gopher version.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-## The hierarchy	Err	bitreich.org	70
i+## Showcase	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-Here are the files and folder of cl-yag :	Err	bitreich.org	70
i- 	Err	bitreich.org	70
i-+ **Makefile** : exists to simplify your life (updating, cleaning) 	Err	bitreich.org	70
i-+ **generator.lisp** : contains all the code of the generator	Err	bitreich.org	70
i-+ **templates/** : contains .tpl files which are used as template for the html or xml structure 	Err	bitreich.org	70
i-+ **static/** : contains the static files like images, css, js etc... that will be published	Err	bitreich.org	70
i-+ **data/** : 	Err	bitreich.org	70
i-  + **articles.lisp** : contains metadata about the website and the list of the articles with their id/title/date/tag/*author*/*short description* (fields in *italic* are not mandatory)	Err	bitreich.org	70
i-  + **${id}.md** : contains the article using markdown syntax that will be used when exported	Err	bitreich.org	70
i-+ **output/** :	Err	bitreich.org	70
i-  + **gopher/** : contains the exported website for gopher	Err	bitreich.org	70
i-  + **html/** : contains the exported website in html	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-# Usage	Err	bitreich.org	70
i+I am using cl-yag to create and maintain my websites in the	Err	bitreich.org	70
i+world-wide-web (visit: *[Solene's	Err	bitreich.org	70
i+percent](https://dataswamp.org/~solene/)*) as well as [in	Err	bitreich.org	70
i+gopher-space](gopher://dataswamp.org/1/~solene/).	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-## Configuration	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-In data/articles.lisp there is a ***config*** variable with the following fields :	Err	bitreich.org	70
i+## Requirements	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+To use cl-yag you'll need:	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+1. A Common Lisp Interpreter	Err	bitreich.org	70
i+    - cl-yag's current default is **Steel Bank Common Lisp (SBCL)**.	Err	bitreich.org	70
i+    - **Embeddable Common Lisp (ECL)** will do fine as well.	Err	bitreich.org	70
i+2. A Markdown-to-HTML Converter	Err	bitreich.org	70
i+    - cl-yag's current default is **multimarkdown**.	Err	bitreich.org	70
i+3. BSD Make	Err	bitreich.org	70
i+    - Linux-Users, cl-yag uses a BSD Makefile syntax, that isn't compatible with GNU make's.	Err	bitreich.org	70
i+    - You need to install a port of the NetBSD make tool, called **bmake**.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+## Usage	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+Go into your project's directory and type ``make``. You'll find your new website/gopher page in 'output/'.  	Err	bitreich.org	70
i+If you want to get rid of everything in your 'output/' subdirectories,	Err	bitreich.org	70
i+type ``make clean``.  	Err	bitreich.org	70
i+For further commands: read the Makefile.  	Err	bitreich.org	70
i+Read in the follwing section where to find it.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+## Overview: cl-yag's File Hierarchy	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+After cloning the repository, your project's directory should contain at	Err	bitreich.org	70
i+least the following files and folders:	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        .	Err	bitreich.org	70
i+        |-- LICENSE	Err	bitreich.org	70
i+        |-- Makefile	Err	bitreich.org	70
i+        |-- README.md	Err	bitreich.org	70
i+        |-- data/	Err	bitreich.org	70
i+        |   |-- 1.md	Err	bitreich.org	70
i+        |   |-- README.md	Err	bitreich.org	70
i+        |   `-- articles.lisp	Err	bitreich.org	70
i+        |-- generator.lisp	Err	bitreich.org	70
i+        |-- output/	Err	bitreich.org	70
i+        |   |-- gopher/	Err	bitreich.org	70
i+        |   `-- html/	Err	bitreich.org	70
i+        |-- static/	Err	bitreich.org	70
i+        |   |-- css/style.css	Err	bitreich.org	70
i+        |   `-- img/	Err	bitreich.org	70
i+        `-- templates/	Err	bitreich.org	70
i+                |-- article.tpl	Err	bitreich.org	70
i+                |-- gopher_head.tpl	Err	bitreich.org	70
i+                |-- layout.tpl	Err	bitreich.org	70
i+                |-- one-tag.tpl	Err	bitreich.org	70
i+                |-- rss-item.tpl	Err	bitreich.org	70
i+                `-- rss.tpl	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-+ **:webmaster** : The name of the default author, this is the name used when **:author** is omitted	Err	bitreich.org	70
i-+ **:title** : The title of the webpage	Err	bitreich.org	70
i-+ **:description** : This text is used in the *description* field of the Atom RSS	Err	bitreich.org	70
i-+ **:url** : This is the full url of the blog with the final slash. If the url contains a ~ it should be doubled (e.g. : https://mydomain/~~user/ is a valid url)	Err	bitreich.org	70
i-+ **:rss-item-number** : This is the number of RSS items you want to published when you generate the files, it will publish the last N articles	Err	bitreich.org	70
i-+ **html** : t to export html website / nil to disable	Err	bitreich.org	70
i-+ **gopher** : t to export gopher website / nil to disable	Err	bitreich.org	70
i-+ **gopher-path** : this is the full path of the directory to access your gopher hole	Err	bitreich.org	70
i-+ **gopher-server**: hostname of the gopher server because gopher doesn't have relative links like html, so you need to know where you put your files	Err	bitreich.org	70
i-+ **gopher-port** : tcp port of the gopher server, 70 is the default port, it's included in every link as explained in gopher-server	Err	bitreich.org	70
i+- **Makefile**	Err	bitreich.org	70
i+    - This file exists to simplifiy the recurring execution of frequently used commands.	Err	bitreich.org	70
i+- **generator.lisp**	Err	bitreich.org	70
i+    - This is cl-yag's core library.	Err	bitreich.org	70
i+- **static/**	Err	bitreich.org	70
i+    - This directory holds content, that needs to be published without being changed (e.g. stylesheets, js-scripts).	Err	bitreich.org	70
i+        - If you come from 'non-static CMS'-Country: 'static/' holds, what you would put in your 'assets/' directory.	Err	bitreich.org	70
i+- **templates/**	Err	bitreich.org	70
i+    - The templates in this directory provide the structural skeleton(s) of the webpages and feeds you want to create.	Err	bitreich.org	70
i+- **output/**	Err	bitreich.org	70
i+    - cl-yag puts in this directory everything ready to get deployed.	Err	bitreich.org	70
i+        - Because cl-yag generates not only HTML, but gopher-compliant pages as well, output/ **holds two subdirectories**.	Err	bitreich.org	70
i+                - **gopher/** : contains the website for gopher,	Err	bitreich.org	70
i+                - **html/** : contains the website in HTML.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-## How to add an article	Err	bitreich.org	70
i+And there is the **data/** directory, which is important enough to get a subsubsection of its own.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+### The 'data/' Directory	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+This directory is crucial for the usage of cl-yag.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+**data/** contains	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+- the **articles.lisp configuration file**, which defines important metadata for posts and pages.	Err	bitreich.org	70
i+- It also holds **${id}.md**-files, which are holding your posts' and pages' content. You can use markdown to write them.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+For more information: Read section 'Configuration'.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+## Configuration	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+cl-yag's main configuration file is **data/articles.lisp**.  	Err	bitreich.org	70
i+In order to have a reliably running implementation of cl-yag, you have	Err	bitreich.org	70
i+to set most of the values in this file.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+**data/articles.lisp** has two parts:	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+1. A variable called **config**. It defines global values, that define your webpage.	Err	bitreich.org	70
i+2. A variable called **articles**. It defines local values, that - in turn - define individual pages/posts.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+Values are assigned by placing a string (e.g. "foo") or a boolean	Err	bitreich.org	70
i+(i.e. 't' or 'nil') behind a keyword (e.g. ':title').	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+### The **config** Variable	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+The **config** variable is used to assign the following values:	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+- **:webmaster**	Err	bitreich.org	70
i+    - The name of the default(!) author. 	Err	bitreich.org	70
i+        - :webmaster gets used, if **:author** is omitted. (see below: 'The **articles** variable'.)	Err	bitreich.org	70
i+- **:title**	Err	bitreich.org	70
i+    - The title of the webpage	Err	bitreich.org	70
i+- **:description**	Err	bitreich.org	70
i+    - This text is used in the *description* field of the Atom RSS	Err	bitreich.org	70
i+- **:url**	Err	bitreich.org	70
i+    - This needs to be the full(!) URL of your website, including(!) a final slash.	Err	bitreich.org	70
i+        - MIND: If the url contains a tilde (~), it needs to get duplicated	Err	bitreich.org	70
i+        - Example: https://mydomain/~~user/ is a valid url.	Err	bitreich.org	70
i+- **:rss-item-number**	Err	bitreich.org	70
i+    - This holds the number of latest(!) RSS items you want to get published when you generate the files.	Err	bitreich.org	70
i+- **html**	Err	bitreich.org	70
i+    - *t* to export html website. Set *nil* to disable.	Err	bitreich.org	70
i+- **gopher**	Err	bitreich.org	70
i+    - *t* to export gopher website. Set *nil* to disable.	Err	bitreich.org	70
i+- **gopher-path**	Err	bitreich.org	70
i+    - This is the full path of the directory to access your gopher hole.	Err	bitreich.org	70
i+- **gopher-server**	Err	bitreich.org	70
i+    - Hostname of the gopher server. Because gopher doesn't allow relative links (like html), you need to know where you put your files.	Err	bitreich.org	70
i+- **gopher-port**	Err	bitreich.org	70
i+    - tcp port of the gopher server. 70 is the default port. It need to be included in every link (see: **gopher-server**).	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+### The **articles** Variable	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+The **articles** variable holds per page/post-metadata.  	Err	bitreich.org	70
i+Of the following fields, only the *:author* and *:short* description could be omitted.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+- **:short**	Err	bitreich.org	70
i+        - The _:short_ field's value is used for displaying a really short description of the posts content on your homepage.	Err	bitreich.org	70
i+        - If _:short_ doesn't get a value, the full article gets displayed.	Err	bitreich.org	70
i+        - Hint: Use ``:short "view the article for the full text"``, if you don't want to display the full text of an article on your index site.	Err	bitreich.org	70
i+- **:id_**	Err	bitreich.org	70
i+    - The _:id_ field holds the filename of your post/page. 	Err	bitreich.org	70
i+        - Example: ``:id "2"`` will load file ``data/2.md``. Use text instead of numbers, if you want to.	Err	bitreich.org	70
i+        - (See section: 'The **data/** Directory'.)	Err	bitreich.org	70
i+- **:author**	Err	bitreich.org	70
i+    - The _:author_ field is used to display the article' author.	Err	bitreich.org	70
i+    -  If you omit it, the generator will take the name from the **:webmaster** field of the *config* variable.	Err	bitreich.org	70
i+- **:tag**	Err	bitreich.org	70
i+    - _:tag_ field is used to create a "view" containing all articles of the same tag.	Err	bitreich.org	70
i+        -  MIND: Whitespaces are not allowed in(!) tags.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+## Howto Create A New Post	Err	bitreich.org	70
i  	Err	bitreich.org	70
i-Edit data/articles.lisp and add a new line inside the *articles* variable like this (you can do it in one line, as you prefer)	Err	bitreich.org	70
i+Edit data/articles.lisp and add a new list to the *articles* variable:	Err	bitreich.org	70
i 	Err	bitreich.org	70
i     (list :title "How do I use cl-yag" 	Err	bitreich.org	70
i-              :id "2" :date "29 April 2016" 	Err	bitreich.org	70
i-              :author "Solène" 	Err	bitreich.org	70
i+                  :id "2"	Err	bitreich.org	70
i+                  :date "29 April 2016" 	Err	bitreich.org	70
i+                  :author "Solène"	Err	bitreich.org	70
i                   :short "I will explain how to use the generator" 	Err	bitreich.org	70
i                   :tag "example help code")	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-The _:short_ field is used on the homepage. It it is defined, this is the text that will be shown on the homepage with all the others articles. If it's not defined, the whole article content will be used on the homepage. Sometimes when you have long articles, you may not want to display it entirely on the index so you can use _:short "view the article for the full text_.	Err	bitreich.org	70
i+Then write a corresponding ``2.md`` file, using markdown.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-The _:id_ field will be part of the filename of the file and it's also the name of the content on the disk. `:id "2"` will load file `data/2.txt`, you can use text instead of numbers if you want.	Err	bitreich.org	70
i+## Howto Publish A Post	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-The _:author_ field is used to display who wrote the article. You can omitt it, the generator will take the name from the *config* variable	Err	bitreich.org	70
i+I prepared a Makefile to facilitate the process of generating and	Err	bitreich.org	70
i+publishing your static sites.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-The _:tag_ field is used to create a page with all the articles with the same tag. Tags can't contain spaces.	Err	bitreich.org	70
i+All you need to do in order to publish is to go into your cl-yag	Err	bitreich.org	70
i+directory and type "make".	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-## How to publish	Err	bitreich.org	70
i+The 'make' command does create html and gopher files in the defined	Err	bitreich.org	70
i+**output/** location (which can be a symbolic link pointing to some	Err	bitreich.org	70
i+other directory, somewhere else on your machine).	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-There is a makefile, all you need to do is to type "make" in the folder, this will create the files in the **output/** location (which can be a symbolic link to somewhere else). The Gopher website will be generated inside **output/gopher** and the html will be generated in **output/html**.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-**/!\ Linux users /!\ **  you should use **bmake** (bsd make) because the Makefile isn't compatible with gmake (gnu make) which is the default in Linux.	Err	bitreich.org	70
i+## Howto Add A New Page	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-If you want to use a different lisp interpreter (default is **sbcl**), you can set the variable LISP to the name of your binary. 	Err	bitreich.org	70
i+You may want to have some dedicated pages besides the index or a post.  	Err	bitreich.org	70
i+To create one, edit the **generate-site** function in cl-yag's	Err	bitreich.org	70
i+generator.lisp and add a function call, like this:	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-Example with clisp : 	Err	bitreich.org	70
i+    (generate "somepage.html" (load-file "data/mypage.html"))	Err	bitreich.org	70
i+  	Err	bitreich.org	70
i+This will produce the file **somepage.html** in the output folder.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-`make LISP=clisp`	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-This way, you can easily use a git hook to type make after each change in the repo so your website is automatically updated.	Err	bitreich.org	70
i+## Further Customization	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-# Some hacks you can do	Err	bitreich.org	70
i+### Howto Use Another Common Lisp Interpreter	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-I tried to make it "hacking friendly", you can extend if easily. If you have any idea, feel free to contact me or to send patches.	Err	bitreich.org	70
i+cl-yags default Lisp interpreter is **sbcl**.  	Err	bitreich.org	70
i+If you want to use a different lisp interpreter you need to set the	Err	bitreich.org	70
i+variable 'LISP' to the name of your binary, when calling ``make``.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-## Include some file in the template	Err	bitreich.org	70
i+        `make LISP=ecl`	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-Here is an example code if you want to include a page in the template	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-+ Add a string for the replacement to occure, like %%Panel%% in **template/layout.tpl** (because we want the panel on every page)	Err	bitreich.org	70
i-+ In **generator.lisp** modify the function *generate-layout* to add "**(template "%%Panel%%" (load-file "template/panel.tpl"))**" after one template function call	Err	bitreich.org	70
i-+ Create **template/panel.tpl** with the html	Err	bitreich.org	70
i+### Using git Hooks For Publishing	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-(note : you can also directly add your text inside the layout template file instead of including another file)	Err	bitreich.org	70
i+You may customize your publishing-process further, e.g. by using a git	Err	bitreich.org	70
i+hook to call 'make' after each change in the repo so your website gets	Err	bitreich.org	70
i+updated automatically.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-## Add a new specific page	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-You may want to have some dedicated page for some reason, reusing the website layout, which is not the index nor an article.	Err	bitreich.org	70
i+## Page-Includes	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-In **generate-site** function we can load a file, apply the template and save it in the output. It may look like this	Err	bitreich.org	70
i+Here is an example code, if you want to include another page in the template:	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-    (generate "somepage.html" (load-file "data/mypage.html"))	Err	bitreich.org	70
i-  	Err	bitreich.org	70
i-This will produce the file **somepage.html** in the output folder.	Err	bitreich.org	70
i+1. Create **template/panel.tpl** with the html you want to include.	Err	bitreich.org	70
i+2. Add a string in the target file, where the replacement should occur.  	Err	bitreich.org	70
i+   In this case, we choose **%%Panel%%** for a string, and, because we want the panel to be displayed on each page, we add this string to **template/layout.tpl**.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+3. Modify the function *generate-layout* in cl-yag's **generator.lisp** accordingly.  	Err	bitreich.org	70
i+   This is done by adding the following template function call:	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+                "**(template "%%Panel%%" (load-file "template/panel.tpl"))**" 	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+(Note: You can insert your text directly into the layout template file	Err	bitreich.org	70
i+as well.)	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+## Known Limitations	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+### Use ~~ To Create ~	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+cl-yag crashes if you use a single "**~**" caracter inside one data	Err	bitreich.org	70
i+structure in **articles.lisp** files, because Common Lisp employs the	Err	bitreich.org	70
i+tilde as a prefix to indicate format specifiers in format strings.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+In order to use a literal `~` - e.g. for creating a :title or :url	Err	bitreich.org	70
i+reference - you have to **escape** the tilde **by duplicating** it:	Err	bitreich.org	70
i+``~~``.  	Err	bitreich.org	70
i+(See _:url_ in section 'Configuration').	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+### Posting Without Tagging	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+cl-yag allows posts to be 'untagged'- but with the default template	Err	bitreich.org	70
i+you'll get a line below your title that displays: "Tags: ".	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+(Note: If you are looking for a way to contribute this may be a task for you.)	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+### A Note On Themes	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+Although cl-yag **may** ship with a **minimalistic** template, cl-yag	Err	bitreich.org	70
i+focuses only on generating html- and gopher-compliant structural	Err	bitreich.org	70
i+markup - not themed layouts.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-# Known limitations	Err	bitreich.org	70
i+If you want some deeply refined, cross-browser compatible, responsive,	Err	bitreich.org	70
i+webscale style-sheet, you need to create it yourself.  	Err	bitreich.org	70
i+However, cl-yag will work nicely with it and if you want to make your	Err	bitreich.org	70
i+stylesheets a part of cl-yag you're very welcome to contact me.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-## Use of ~ character	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-The application will crash if you use a single "**~**" caracter inside one data structure in **articles.lisp** files. This is due to the format function trying to interpret the ~ symbol while we just one a ~ symbol. This symbol in the others files are automatically replaced by ~~ which produce a single ~. So, if you want to have a "~" as a title/url/author/description/short/date you have to double it. It may be interestind to sanitize it in the tool maybe.	Err	bitreich.org	70
i+# Hacking cl-yag	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-## Article without tag	Err	bitreich.org	70
i+I tried to make cl-yag easy to extend.  	Err	bitreich.org	70
i+If you want to contribute, feel free to contact me and/or to send in a patch.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-You can have a page without a tag associated but in the default template you will have a line under the title which will displays "Tags : " and no tags after.	Err	bitreich.org	70
i+- If you are looking for a way to contribute:	Err	bitreich.org	70
i+    - You could find a way to "sanitize" cl-yag's behaviour regarding the tilde (see: above);	Err	bitreich.org	70
i+    - Also see: 'Note' in 'Posting Without Tagging';	Err	bitreich.org	70
i+        - Also see: 'A Note On Themes.	Err	bitreich.org	70
1diff --git a/data/README.md b/data/README.md	/scm/cl-yag/file/data/README.md.gph	bitreich.org	70
i@@ -1,108 +1,278 @@	Err	bitreich.org	70
i-# Introduction	Err	bitreich.org	70
i+# README	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-cl-yag stands for Common Lisp Yet Another Generator and obviously it's written in Common Lisp. Currently, cl-yag can generate **gopher** and **html** website.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-**It needs a Common Lisp interpreter and a markdown-to-html export tool (like multimarkdown).**	Err	bitreich.org	70
i-It is regularly tested with sbcl, clisp and ecl which are free, open-source and multi-platform. You don't need quicklisp library manager.	Err	bitreich.org	70
i+## Introduction	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-**This comes with a minimalistic template**, don't expect something good looking without work. You will have to write the CSS entirely and modify the html to fit your need.	Err	bitreich.org	70
i+cl-yag is a very lightweight, 'static site'-generator that produces **gopher** sites as well as **html** websites.  	Err	bitreich.org	70
i+The name 'cl-yag' stands for 'Common Lisp - Yet Another website Generator'.  	Err	bitreich.org	70
i+It runs without Quicklisp.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-As a "demo", there is [my website](https://dataswamp.org/~solene/) using cl-yag for html version, and [my gopher](gopher://perso.pw) for gopher version.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-## The hierarchy	Err	bitreich.org	70
i+## Showcase	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-Here are the files and folder of cl-yag :	Err	bitreich.org	70
i- 	Err	bitreich.org	70
i-+ **Makefile** : exists to simplify your life (updating, cleaning) 	Err	bitreich.org	70
i-+ **generator.lisp** : contains all the code of the generator	Err	bitreich.org	70
i-+ **templates/** : contains .tpl files which are used as template for the html or xml structure 	Err	bitreich.org	70
i-+ **static/** : contains the static files like images, css, js etc... that will be published	Err	bitreich.org	70
i-+ **data/** : 	Err	bitreich.org	70
i-  + **articles.lisp** : contains metadata about the website and the list of the articles with their id/title/date/tag/*author*/*short description* (fields in *italic* are not mandatory)	Err	bitreich.org	70
i-  + **${id}.md** : contains the article using markdown syntax that will be used when exported	Err	bitreich.org	70
i-+ **output/** :	Err	bitreich.org	70
i-  + **gopher/** : contains the exported website for gopher	Err	bitreich.org	70
i-  + **html/** : contains the exported website in html	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-# Usage	Err	bitreich.org	70
i+I am using cl-yag to create and maintain my websites in the	Err	bitreich.org	70
i+world-wide-web (visit: *[Solene's	Err	bitreich.org	70
i+percent](https://dataswamp.org/~solene/)*) as well as [in	Err	bitreich.org	70
i+gopher-space](gopher://dataswamp.org/1/~solene/).	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-## Configuration	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-In data/articles.lisp there is a ***config*** variable with the following fields :	Err	bitreich.org	70
i+## Requirements	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+To use cl-yag you'll need:	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+1. A Common Lisp Interpreter	Err	bitreich.org	70
i+    - cl-yag's current default is **Steel Bank Common Lisp (SBCL)**.	Err	bitreich.org	70
i+    - **Embeddable Common Lisp (ECL)** will do fine as well.	Err	bitreich.org	70
i+2. A Markdown-to-HTML Converter	Err	bitreich.org	70
i+    - cl-yag's current default is **multimarkdown**.	Err	bitreich.org	70
i+3. BSD Make	Err	bitreich.org	70
i+    - Linux-Users, cl-yag uses a BSD Makefile syntax, that isn't compatible with GNU make's.	Err	bitreich.org	70
i+    - You need to install a port of the NetBSD make tool, called **bmake**.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+## Usage	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+Go into your project's directory and type ``make``. You'll find your new website/gopher page in 'output/'.  	Err	bitreich.org	70
i+If you want to get rid of everything in your 'output/' subdirectories,	Err	bitreich.org	70
i+type ``make clean``.  	Err	bitreich.org	70
i+For further commands: read the Makefile.  	Err	bitreich.org	70
i+Read in the follwing section where to find it.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+## Overview: cl-yag's File Hierarchy	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+After cloning the repository, your project's directory should contain at	Err	bitreich.org	70
i+least the following files and folders:	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+        .	Err	bitreich.org	70
i+        |-- LICENSE	Err	bitreich.org	70
i+        |-- Makefile	Err	bitreich.org	70
i+        |-- README.md	Err	bitreich.org	70
i+        |-- data/	Err	bitreich.org	70
i+        |   |-- 1.md	Err	bitreich.org	70
i+        |   |-- README.md	Err	bitreich.org	70
i+        |   `-- articles.lisp	Err	bitreich.org	70
i+        |-- generator.lisp	Err	bitreich.org	70
i+        |-- output/	Err	bitreich.org	70
i+        |   |-- gopher/	Err	bitreich.org	70
i+        |   `-- html/	Err	bitreich.org	70
i+        |-- static/	Err	bitreich.org	70
i+        |   |-- css/style.css	Err	bitreich.org	70
i+        |   `-- img/	Err	bitreich.org	70
i+        `-- templates/	Err	bitreich.org	70
i+                |-- article.tpl	Err	bitreich.org	70
i+                |-- gopher_head.tpl	Err	bitreich.org	70
i+                |-- layout.tpl	Err	bitreich.org	70
i+                |-- one-tag.tpl	Err	bitreich.org	70
i+                |-- rss-item.tpl	Err	bitreich.org	70
i+                `-- rss.tpl	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-+ **:webmaster** : The name of the default author, this is the name used when **:author** is omitted	Err	bitreich.org	70
i-+ **:title** : The title of the webpage	Err	bitreich.org	70
i-+ **:description** : This text is used in the *description* field of the Atom RSS	Err	bitreich.org	70
i-+ **:url** : This is the full url of the blog with the final slash. If the url contains a ~ it should be doubled (e.g. : https://mydomain/~~user/ is a valid url)	Err	bitreich.org	70
i-+ **:rss-item-number** : This is the number of RSS items you want to published when you generate the files, it will publish the last N articles	Err	bitreich.org	70
i-+ **html** : t to export html website / nil to disable	Err	bitreich.org	70
i-+ **gopher** : t to export gopher website / nil to disable	Err	bitreich.org	70
i-+ **gopher-path** : this is the full path of the directory to access your gopher hole	Err	bitreich.org	70
i-+ **gopher-server**: hostname of the gopher server because gopher doesn't have relative links like html, so you need to know where you put your files	Err	bitreich.org	70
i-+ **gopher-port** : tcp port of the gopher server, 70 is the default port, it's included in every link as explained in gopher-server	Err	bitreich.org	70
i+- **Makefile**	Err	bitreich.org	70
i+    - This file exists to simplifiy the recurring execution of frequently used commands.	Err	bitreich.org	70
i+- **generator.lisp**	Err	bitreich.org	70
i+    - This is cl-yag's core library.	Err	bitreich.org	70
i+- **static/**	Err	bitreich.org	70
i+    - This directory holds content, that needs to be published without being changed (e.g. stylesheets, js-scripts).	Err	bitreich.org	70
i+        - If you come from 'non-static CMS'-Country: 'static/' holds, what you would put in your 'assets/' directory.	Err	bitreich.org	70
i+- **templates/**	Err	bitreich.org	70
i+    - The templates in this directory provide the structural skeleton(s) of the webpages and feeds you want to create.	Err	bitreich.org	70
i+- **output/**	Err	bitreich.org	70
i+    - cl-yag puts in this directory everything ready to get deployed.	Err	bitreich.org	70
i+        - Because cl-yag generates not only HTML, but gopher-compliant pages as well, output/ **holds two subdirectories**.	Err	bitreich.org	70
i+                - **gopher/** : contains the website for gopher,	Err	bitreich.org	70
i+                - **html/** : contains the website in HTML.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-## How to add an article	Err	bitreich.org	70
i+And there is the **data/** directory, which is important enough to get a subsubsection of its own.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+### The 'data/' Directory	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+This directory is crucial for the usage of cl-yag.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+**data/** contains	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+- the **articles.lisp configuration file**, which defines important metadata for posts and pages.	Err	bitreich.org	70
i+- It also holds **${id}.md**-files, which are holding your posts' and pages' content. You can use markdown to write them.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+For more information: Read section 'Configuration'.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+## Configuration	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+cl-yag's main configuration file is **data/articles.lisp**.  	Err	bitreich.org	70
i+In order to have a reliably running implementation of cl-yag, you have	Err	bitreich.org	70
i+to set most of the values in this file.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+**data/articles.lisp** has two parts:	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+1. A variable called **config**. It defines global values, that define your webpage.	Err	bitreich.org	70
i+2. A variable called **articles**. It defines local values, that - in turn - define individual pages/posts.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+Values are assigned by placing a string (e.g. "foo") or a boolean	Err	bitreich.org	70
i+(i.e. 't' or 'nil') behind a keyword (e.g. ':title').	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+### The **config** Variable	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+The **config** variable is used to assign the following values:	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+- **:webmaster**	Err	bitreich.org	70
i+    - The name of the default(!) author. 	Err	bitreich.org	70
i+        - :webmaster gets used, if **:author** is omitted. (see below: 'The **articles** variable'.)	Err	bitreich.org	70
i+- **:title**	Err	bitreich.org	70
i+    - The title of the webpage	Err	bitreich.org	70
i+- **:description**	Err	bitreich.org	70
i+    - This text is used in the *description* field of the Atom RSS	Err	bitreich.org	70
i+- **:url**	Err	bitreich.org	70
i+    - This needs to be the full(!) URL of your website, including(!) a final slash.	Err	bitreich.org	70
i+        - MIND: If the url contains a tilde (~), it needs to get duplicated	Err	bitreich.org	70
i+        - Example: https://mydomain/~~user/ is a valid url.	Err	bitreich.org	70
i+- **:rss-item-number**	Err	bitreich.org	70
i+    - This holds the number of latest(!) RSS items you want to get published when you generate the files.	Err	bitreich.org	70
i+- **html**	Err	bitreich.org	70
i+    - *t* to export html website. Set *nil* to disable.	Err	bitreich.org	70
i+- **gopher**	Err	bitreich.org	70
i+    - *t* to export gopher website. Set *nil* to disable.	Err	bitreich.org	70
i+- **gopher-path**	Err	bitreich.org	70
i+    - This is the full path of the directory to access your gopher hole.	Err	bitreich.org	70
i+- **gopher-server**	Err	bitreich.org	70
i+    - Hostname of the gopher server. Because gopher doesn't allow relative links (like html), you need to know where you put your files.	Err	bitreich.org	70
i+- **gopher-port**	Err	bitreich.org	70
i+    - tcp port of the gopher server. 70 is the default port. It need to be included in every link (see: **gopher-server**).	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+### The **articles** Variable	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+The **articles** variable holds per page/post-metadata.  	Err	bitreich.org	70
i+Of the following fields, only the *:author* and *:short* description could be omitted.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+- **:short**	Err	bitreich.org	70
i+        - The _:short_ field's value is used for displaying a really short description of the posts content on your homepage.	Err	bitreich.org	70
i+        - If _:short_ doesn't get a value, the full article gets displayed.	Err	bitreich.org	70
i+        - Hint: Use ``:short "view the article for the full text"``, if you don't want to display the full text of an article on your index site.	Err	bitreich.org	70
i+- **:id_**	Err	bitreich.org	70
i+    - The _:id_ field holds the filename of your post/page. 	Err	bitreich.org	70
i+        - Example: ``:id "2"`` will load file ``data/2.md``. Use text instead of numbers, if you want to.	Err	bitreich.org	70
i+        - (See section: 'The **data/** Directory'.)	Err	bitreich.org	70
i+- **:author**	Err	bitreich.org	70
i+    - The _:author_ field is used to display the article' author.	Err	bitreich.org	70
i+    -  If you omit it, the generator will take the name from the **:webmaster** field of the *config* variable.	Err	bitreich.org	70
i+- **:tag**	Err	bitreich.org	70
i+    - _:tag_ field is used to create a "view" containing all articles of the same tag.	Err	bitreich.org	70
i+        -  MIND: Whitespaces are not allowed in(!) tags.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+## Howto Create A New Post	Err	bitreich.org	70
i  	Err	bitreich.org	70
i-Edit data/articles.lisp and add a new line inside the *articles* variable like this (you can do it in one line, as you prefer)	Err	bitreich.org	70
i+Edit data/articles.lisp and add a new list to the *articles* variable:	Err	bitreich.org	70
i 	Err	bitreich.org	70
i     (list :title "How do I use cl-yag" 	Err	bitreich.org	70
i-              :id "2" :date "29 April 2016" 	Err	bitreich.org	70
i-              :author "Solène" 	Err	bitreich.org	70
i+                  :id "2"	Err	bitreich.org	70
i+                  :date "29 April 2016" 	Err	bitreich.org	70
i+                  :author "Solène"	Err	bitreich.org	70
i                   :short "I will explain how to use the generator" 	Err	bitreich.org	70
i                   :tag "example help code")	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-The _:short_ field is used on the homepage. It it is defined, this is the text that will be shown on the homepage with all the others articles. If it's not defined, the whole article content will be used on the homepage. Sometimes when you have long articles, you may not want to display it entirely on the index so you can use _:short "view the article for the full text_.	Err	bitreich.org	70
i+Then write a corresponding ``2.md`` file, using markdown.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-The _:id_ field will be part of the filename of the file and it's also the name of the content on the disk. `:id "2"` will load file `data/2.txt`, you can use text instead of numbers if you want.	Err	bitreich.org	70
i+## Howto Publish A Post	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-The _:author_ field is used to display who wrote the article. You can omitt it, the generator will take the name from the *config* variable	Err	bitreich.org	70
i+I prepared a Makefile to facilitate the process of generating and	Err	bitreich.org	70
i+publishing your static sites.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-The _:tag_ field is used to create a page with all the articles with the same tag. Tags can't contain spaces.	Err	bitreich.org	70
i+All you need to do in order to publish is to go into your cl-yag	Err	bitreich.org	70
i+directory and type "make".	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-## How to publish	Err	bitreich.org	70
i+The 'make' command does create html and gopher files in the defined	Err	bitreich.org	70
i+**output/** location (which can be a symbolic link pointing to some	Err	bitreich.org	70
i+other directory, somewhere else on your machine).	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-There is a makefile, all you need to do is to type "make" in the folder, this will create the files in the **output/** location (which can be a symbolic link to somewhere else). The Gopher website will be generated inside **output/gopher** and the html will be generated in **output/html**.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-**/!\ Linux users /!\ **  you should use **bmake** (bsd make) because the Makefile isn't compatible with gmake (gnu make) which is the default in Linux.	Err	bitreich.org	70
i+## Howto Add A New Page	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-If you want to use a different lisp interpreter (default is **sbcl**), you can set the variable LISP to the name of your binary. 	Err	bitreich.org	70
i+You may want to have some dedicated pages besides the index or a post.  	Err	bitreich.org	70
i+To create one, edit the **generate-site** function in cl-yag's	Err	bitreich.org	70
i+generator.lisp and add a function call, like this:	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-Example with clisp : 	Err	bitreich.org	70
i+    (generate "somepage.html" (load-file "data/mypage.html"))	Err	bitreich.org	70
i+  	Err	bitreich.org	70
i+This will produce the file **somepage.html** in the output folder.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-`make LISP=clisp`	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-This way, you can easily use a git hook to type make after each change in the repo so your website is automatically updated.	Err	bitreich.org	70
i+## Further Customization	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-# Some hacks you can do	Err	bitreich.org	70
i+### Howto Use Another Common Lisp Interpreter	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-I tried to make it "hacking friendly", you can extend if easily. If you have any idea, feel free to contact me or to send patches.	Err	bitreich.org	70
i+cl-yags default Lisp interpreter is **sbcl**.  	Err	bitreich.org	70
i+If you want to use a different lisp interpreter you need to set the	Err	bitreich.org	70
i+variable 'LISP' to the name of your binary, when calling ``make``.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-## Include some file in the template	Err	bitreich.org	70
i+        `make LISP=ecl`	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-Here is an example code if you want to include a page in the template	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-+ Add a string for the replacement to occure, like %%Panel%% in **template/layout.tpl** (because we want the panel on every page)	Err	bitreich.org	70
i-+ In **generator.lisp** modify the function *generate-layout* to add "**(template "%%Panel%%" (load-file "template/panel.tpl"))**" after one template function call	Err	bitreich.org	70
i-+ Create **template/panel.tpl** with the html	Err	bitreich.org	70
i+### Using git Hooks For Publishing	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-(note : you can also directly add your text inside the layout template file instead of including another file)	Err	bitreich.org	70
i+You may customize your publishing-process further, e.g. by using a git	Err	bitreich.org	70
i+hook to call 'make' after each change in the repo so your website gets	Err	bitreich.org	70
i+updated automatically.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-## Add a new specific page	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-You may want to have some dedicated page for some reason, reusing the website layout, which is not the index nor an article.	Err	bitreich.org	70
i+## Page-Includes	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-In **generate-site** function we can load a file, apply the template and save it in the output. It may look like this	Err	bitreich.org	70
i+Here is an example code, if you want to include another page in the template:	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-    (generate "somepage.html" (load-file "data/mypage.html"))	Err	bitreich.org	70
i-  	Err	bitreich.org	70
i-This will produce the file **somepage.html** in the output folder.	Err	bitreich.org	70
i+1. Create **template/panel.tpl** with the html you want to include.	Err	bitreich.org	70
i+2. Add a string in the target file, where the replacement should occur.  	Err	bitreich.org	70
i+   In this case, we choose **%%Panel%%** for a string, and, because we want the panel to be displayed on each page, we add this string to **template/layout.tpl**.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+3. Modify the function *generate-layout* in cl-yag's **generator.lisp** accordingly.  	Err	bitreich.org	70
i+   This is done by adding the following template function call:	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+                "**(template "%%Panel%%" (load-file "template/panel.tpl"))**" 	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+(Note: You can insert your text directly into the layout template file	Err	bitreich.org	70
i+as well.)	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+## Known Limitations	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+### Use ~~ To Create ~	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+cl-yag crashes if you use a single "**~**" caracter inside one data	Err	bitreich.org	70
i+structure in **articles.lisp** files, because Common Lisp employs the	Err	bitreich.org	70
i+tilde as a prefix to indicate format specifiers in format strings.	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+In order to use a literal `~` - e.g. for creating a :title or :url	Err	bitreich.org	70
i+reference - you have to **escape** the tilde **by duplicating** it:	Err	bitreich.org	70
i+``~~``.  	Err	bitreich.org	70
i+(See _:url_ in section 'Configuration').	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+### Posting Without Tagging	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+cl-yag allows posts to be 'untagged'- but with the default template	Err	bitreich.org	70
i+you'll get a line below your title that displays: "Tags: ".	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+(Note: If you are looking for a way to contribute this may be a task for you.)	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+### A Note On Themes	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+Although cl-yag **may** ship with a **minimalistic** template, cl-yag	Err	bitreich.org	70
i+focuses only on generating html- and gopher-compliant structural	Err	bitreich.org	70
i+markup - not themed layouts.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-# Known limitations	Err	bitreich.org	70
i+If you want some deeply refined, cross-browser compatible, responsive,	Err	bitreich.org	70
i+webscale style-sheet, you need to create it yourself.  	Err	bitreich.org	70
i+However, cl-yag will work nicely with it and if you want to make your	Err	bitreich.org	70
i+stylesheets a part of cl-yag you're very welcome to contact me.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-## Use of ~ character	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-The application will crash if you use a single "**~**" caracter inside one data structure in **articles.lisp** files. This is due to the format function trying to interpret the ~ symbol while we just one a ~ symbol. This symbol in the others files are automatically replaced by ~~ which produce a single ~. So, if you want to have a "~" as a title/url/author/description/short/date you have to double it. It may be interestind to sanitize it in the tool maybe.	Err	bitreich.org	70
i+# Hacking cl-yag	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-## Article without tag	Err	bitreich.org	70
i+I tried to make cl-yag easy to extend.  	Err	bitreich.org	70
i+If you want to contribute, feel free to contact me and/or to send in a patch.	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-You can have a page without a tag associated but in the default template you will have a line under the title which will displays "Tags : " and no tags after.	Err	bitreich.org	70
i+- If you are looking for a way to contribute:	Err	bitreich.org	70
i+    - You could find a way to "sanitize" cl-yag's behaviour regarding the tilde (see: above);	Err	bitreich.org	70
i+    - Also see: 'Note' in 'Posting Without Tagging';	Err	bitreich.org	70
i+        - Also see: 'A Note On Themes.	Err	bitreich.org	70
1diff --git a/data/articles.lisp b/data/articles.lisp	/scm/cl-yag/file/data/articles.lisp.gph	bitreich.org	70
i@@ -33,7 +33,11 @@	Err	bitreich.org	70
i 	Err	bitreich.org	70
i (defvar *articles*	Err	bitreich.org	70
i   (list	Err	bitreich.org	70
i-   (list :id "README" :date "20 May 2016" :tag "cl-yag" :title "README" :author "Solène" :short "cl-yag is documenting itself." :tiny "cl-yag's README")	Err	bitreich.org	70
i-   (list :id "1" :date "29 April 2016":tag "pony code" :title "My first message" :short "This is my first message" :author "Solène" :tiny "Read more")	Err	bitreich.org	70
i+   ;; README	Err	bitreich.org	70
i+   (list :id "README"    :date "23 November 2016"  :tag "cl-yag README"	Err	bitreich.org	70
i+         :title "README" :author "lambda"     :short "cl-yag's README got reworked." :tiny "Read cl-yag's README")	Err	bitreich.org	70
i+   ;; 1	Err	bitreich.org	70
i+   (list :id "1"         :date "29 April 2016":tag "pony code"	Err	bitreich.org	70
i+         :title "My first message" :short "This is my first message" :author "Solène" :tiny "Read more")	Err	bitreich.org	70
i    ))	Err	bitreich.org	70
i 	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/cl-yag/commit/561ae0469c01b74...
Content-Typetext/plain; charset=utf-8