i- Date now computed from a format YYYYMMDD - id attribute on
- 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 013ada82f339f61de56f426824c1c3c1a88bf9b1 /scm/cl-yag/commit/013ada82f339f61de56f426824c1c3c1a88bf9b1.gph bitreich.org 70 1parent 52bd9a828bdd422d4c4ec8fbd30ba8f5ef253e76 /scm/cl-yag/commit/52bd9a828bdd422d4c4ec8fbd30ba8f5ef253e76.gph bitreich.org 70 hAuthor: Solene Rapenne URL:mailto:solene@perso.pw bitreich.org 70 iDate: Wed, 13 Dec 2017 20:35:33 +0100 Err bitreich.org 70 i Err bitreich.org 70 i- Date now computed from a format YYYYMMDD Err bitreich.org 70 i- id attribute on
Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M data/articles.lisp | 7 ++++--- Err bitreich.org 70 i M generator.lisp | 55 +++++++++++++++++++++++++++---- Err bitreich.org 70 i M templates/article.tpl | 2 +- Err bitreich.org 70 i Err bitreich.org 70 i3 files changed, 53 insertions(+), 11 deletions(-) Err bitreich.org 70 i--- 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@@ -10,6 +10,7 @@ Err bitreich.org 70 i :description "Yet another website on the net" Err bitreich.org 70 i :url "https://my.website/~~user/" ;; the trailing slash is mandatory! RSS links will fail without it. Notice the '~~' to produce a literal '~' Err bitreich.org 70 i :rss-item-number 10 ;; limit total amount of items in RSS feed to 10 Err bitreich.org 70 i+ :date-format "%DayNumber %MonthName %Year" ;; format for date %DayNumber %DayName %MonthNumber %MonthName %Year Err bitreich.org 70 i :html t ;; 't' to enable export to a html website / 'nil' to disable Err bitreich.org 70 i :gopher t ;; 't' to enable export to a gopher website / 'nil' to disable Err bitreich.org 70 i :gopher-path "/user" ;; absolute path of your gopher directory Err bitreich.org 70 i@@ -41,15 +42,15 @@ Err bitreich.org 70 i Err bitreich.org 70 i ;; CSS Err bitreich.org 70 i (post :title "CSS For cl-yag" Err bitreich.org 70 i- :id "css" :date "02.12.2017" :tag "cl-yag" Err bitreich.org 70 i+ :id "css" :date "20171202" :tag "cl-yag" Err bitreich.org 70 i :author "lambda" :tiny "Read more") Err bitreich.org 70 i Err bitreich.org 70 i ;; README Err bitreich.org 70 i (post :title "README" Err bitreich.org 70 i- :id "README" :date "23.11.2017" :tag "cl-yag" Err bitreich.org 70 i+ :id "README" :date "20171202" :tag "cl-yag" Err bitreich.org 70 i :author "lambda" :tiny "Read cl-yag's README") Err bitreich.org 70 i Err bitreich.org 70 i ;; 1 Err bitreich.org 70 i (post :title "My first post" Err bitreich.org 70 i- :id "1" :date "29.04.2016" :tag "pony" Err bitreich.org 70 i+ :id "1" :date "20160429" :tag "pony" Err bitreich.org 70 i :tiny "This is the first message" :author "Solène") Err bitreich.org 70 1diff --git a/generator.lisp b/generator.lisp /scm/cl-yag/file/generator.lisp.gph bitreich.org 70 i@@ -1,17 +1,21 @@ Err bitreich.org 70 i (defparameter *articles* '()) Err bitreich.org 70 i (defparameter *converters* '()) Err bitreich.org 70 i+(defparameter *days* '("Monday" "Tuesday" "Wednesday" "Thursday" Err bitreich.org 70 i+ "Friday" "Saturday" "Sunday")) Err bitreich.org 70 i+(defparameter *months* '("January" "February" "March" "April" Err bitreich.org 70 i+ "May" "June" "July" "August" "September" Err bitreich.org 70 i+ "October" "November" "December")) Err bitreich.org 70 i Err bitreich.org 70 i ;; structure to store links Err bitreich.org 70 i-(defstruct article title tag date id tiny author short) Err bitreich.org 70 i+(defstruct article title tag date id tiny author) Err bitreich.org 70 i (defstruct converter name command extension) Err bitreich.org 70 i Err bitreich.org 70 i-(defun post(&optional &key title tag date id (tiny nil) (author nil) (short nil)) Err bitreich.org 70 i+(defun post(&optional &key title tag date id (tiny nil) (author nil)) Err bitreich.org 70 i (push (make-article :title title Err bitreich.org 70 i :tag tag Err bitreich.org 70 i :date date Err bitreich.org 70 i :tiny tiny Err bitreich.org 70 i :author author Err bitreich.org 70 i- :short short Err bitreich.org 70 i :id id) Err bitreich.org 70 i *articles*)) Err bitreich.org 70 i Err bitreich.org 70 i@@ -26,6 +30,31 @@ Err bitreich.org 70 i (setf *articles* (reverse *articles*)) Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 i+;; return the day of the week Err bitreich.org 70 i+(defun get-day-of-week(day month year) Err bitreich.org 70 i+ (multiple-value-bind Err bitreich.org 70 i+ (second minute hour date month year day-of-week dst-p tz) Err bitreich.org 70 i+ (decode-universal-time (encode-universal-time 0 0 0 day month year)) Err bitreich.org 70 i+ (declare (ignore second minute hour date month year dst-p tz)) Err bitreich.org 70 i+ day-of-week)) Err bitreich.org 70 i+ Err bitreich.org 70 i+;; parse the date to Err bitreich.org 70 i+(defun date-parse(date) Err bitreich.org 70 i+ (if (= 8 (length date)) Err bitreich.org 70 i+ (let* ((year (parse-integer date :start 0 :end 4)) Err bitreich.org 70 i+ (monthnum (parse-integer date :start 4 :end 6)) Err bitreich.org 70 i+ (daynum (parse-integer date :start 6 :end 8)) Err bitreich.org 70 i+ (day (nth (get-day-of-week daynum monthnum year) *days*)) Err bitreich.org 70 i+ (month (nth (- monthnum 1) *months*))) Err bitreich.org 70 i+ (list Err bitreich.org 70 i+ :dayname day Err bitreich.org 70 i+ :daynumber daynum Err bitreich.org 70 i+ :monthname month Err bitreich.org 70 i+ :monthnumber monthnum Err bitreich.org 70 i+ :year year)) Err bitreich.org 70 i+ nil)) Err bitreich.org 70 i+ Err bitreich.org 70 i+ Err bitreich.org 70 i ;; common-lisp don't have a replace string function natively Err bitreich.org 70 i (defun replace-all (string part replacement &key (test #'char=)) Err bitreich.org 70 i (with-output-to-string (out) Err bitreich.org 70 i@@ -82,6 +111,16 @@ Err bitreich.org 70 i `(progn Err bitreich.org 70 i (setf output (replace-all output ,before ,@after)))) Err bitreich.org 70 i Err bitreich.org 70 i+;; format the date Err bitreich.org 70 i+(defun date-format(format date) Err bitreich.org 70 i+ (let ((output format)) Err bitreich.org 70 i+ (template "%DayName" (getf date :dayname)) Err bitreich.org 70 i+ (template "%DayNumber" (write-to-string (getf date :daynumber))) Err bitreich.org 70 i+ (template "%MonthName" (getf date :monthname)) Err bitreich.org 70 i+ (template "%MonthNumber" (write-to-string (getf date :monthnumber))) Err bitreich.org 70 i+ (template "%Year" (write-to-string (getf date :year ))) Err bitreich.org 70 i+ output)) Err bitreich.org 70 i+ Err bitreich.org 70 i ;; simplify the declaration of a new page type Err bitreich.org 70 i (defmacro prepare(template &body code) Err bitreich.org 70 i `(progn Err bitreich.org 70 i@@ -129,9 +168,11 @@ Err bitreich.org 70 i (prepare "templates/article.tpl" Err bitreich.org 70 i (template "%%Author%%" (let ((author (article-author article))) Err bitreich.org 70 i (or author (getf *config* :webmaster)))) Err bitreich.org 70 i- (template "%%Date%%" (article-date article)) Err bitreich.org 70 i- (template "%%Title%%" (article-title article)) Err bitreich.org 70 i- (template "%%Id%%" (article-id article)) Err bitreich.org 70 i+ (template "%%Date%%" (date-format (getf *config* :date-format) Err bitreich.org 70 i+ (date-parse (article-date article)))) Err bitreich.org 70 i+ (template "%%Raw-Date%%" (article-date article)) Err bitreich.org 70 i+ (template "%%Title%%" (article-title article)) Err bitreich.org 70 i+ (template "%%Id%%" (article-id article)) Err bitreich.org 70 i (template "%%Tags%%" (get-tag-list-article article)) Err bitreich.org 70 i (template "%%Text%%" (if no-text Err bitreich.org 70 i "" Err bitreich.org 70 i@@ -166,7 +207,7 @@ Err bitreich.org 70 i (defun generate-rss-item() Err bitreich.org 70 i (apply #'concatenate 'string Err bitreich.org 70 i (loop for article in *articles* Err bitreich.org 70 i- for i from 1 to (if (> (length *articles*) (getf *config* :rss-item-number)) (getf *config* :rss-item-number) (length *articles*)) Err bitreich.org 70 i+ for i from 1 to (min (length *articles*) (getf *config* :rss-item-number)) Err bitreich.org 70 i collect Err bitreich.org 70 i (prepare "templates/rss-item.tpl" Err bitreich.org 70 i (template "%%Title%%" (article-title article)) Err bitreich.org 70 1diff --git a/templates/article.tpl b/templates/article.tpl /scm/cl-yag/file/templates/article.tpl.gph bitreich.org 70 i@@ -1,5 +1,5 @@ Err bitreich.org 70 i Err bitreich.org 70 i-
Err bitreich.org 70 i+
Err bitreich.org 70 i
Err bitreich.org 70 i

%%Title%%

Err bitreich.org 70 i

Written by %%Author%%, on %%Date%%.
Tags: %%Tags%%

Err bitreich.org 70 .