i- Date now computed from a format YYYYMMDD - id attribute on <article> - 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 <solene@perso.pw> 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 <article> 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-<article> Err bitreich.org 70
i+<article id="%%Raw-Date%%"> Err bitreich.org 70
i <header> Err bitreich.org 70
i <h1><a href="article-%%Id%%.html">%%Title%%</a></h1> Err bitreich.org 70
i <p>Written by <em>%%Author%%</em>, on %%Date%%.<br/>Tags: %%Tags%%</p> Err bitreich.org 70
.
Response:
text/plain