iAdd date in posts url - 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 76cfe4f9da795b24680eba4e8c940e042b1d6e11 /scm/cl-yag/commit/76cfe4f9da795b24680eba4e8c940e042b1d6e11.gph bitreich.org 70 1parent fc0d8912469f5ce1e210ded72b2f52f49d307352 /scm/cl-yag/commit/fc0d8912469f5ce1e210ded72b2f52f49d307352.gph bitreich.org 70 hAuthor: solene rapenne URL:mailto:solene@dataswamp.org bitreich.org 70 iDate: Thu, 14 Dec 2017 00:23:40 +0100 Err bitreich.org 70 i Err bitreich.org 70 iAdd date in posts url Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M generator.lisp | 92 ++++++++++++++++++------------- Err bitreich.org 70 i M templates/article.tpl | 3 ++- Err bitreich.org 70 i Err bitreich.org 70 i2 files changed, 55 insertions(+), 40 deletions(-) Err bitreich.org 70 i--- Err bitreich.org 70 1diff --git a/generator.lisp b/generator.lisp /scm/cl-yag/file/generator.lisp.gph bitreich.org 70 i@@ -1,3 +1,5 @@ Err bitreich.org 70 i+;;;; GLOBAL VARIABLES Err bitreich.org 70 i+ 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@@ -7,36 +9,19 @@ 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) Err bitreich.org 70 i+(defstruct article title tag date id tiny author rawdate) 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)) 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- :id id) Err bitreich.org 70 i- *articles*)) Err bitreich.org 70 i- Err bitreich.org 70 i-;; we add a converter to the list of the one availables Err bitreich.org 70 i-(defun converter(&optional &key name command extension) Err bitreich.org 70 i- (push (make-converter :name name Err bitreich.org 70 i- :command command Err bitreich.org 70 i- :extension extension) Err bitreich.org 70 i- *converters*)) Err bitreich.org 70 i- Err bitreich.org 70 i-(load "data/articles.lisp") Err bitreich.org 70 i-(setf *articles* (reverse *articles*)) Err bitreich.org 70 i- Err bitreich.org 70 i+;;;; FUNCTIONS 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+ (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 Err bitreich.org 70 i ;; parse the date to Err bitreich.org 70 i (defun date-parse(date) Err bitreich.org 70 i@@ -52,7 +37,28 @@ 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+ nil)) Err bitreich.org 70 i+ 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-parse date) Err bitreich.org 70 i+ :rawdate date Err bitreich.org 70 i+ :tiny tiny Err bitreich.org 70 i+ :author author Err bitreich.org 70 i+ :id id) Err bitreich.org 70 i+ *articles*)) Err bitreich.org 70 i+ Err bitreich.org 70 i+;; we add a converter to the list of the one availables Err bitreich.org 70 i+(defun converter(&optional &key name command extension) Err bitreich.org 70 i+ (push (make-converter :name name Err bitreich.org 70 i+ :command command Err bitreich.org 70 i+ :extension extension) Err bitreich.org 70 i+ *converters*)) Err bitreich.org 70 i+ Err bitreich.org 70 i+;; load data from metadata and load config Err bitreich.org 70 i+(load "data/articles.lisp") Err bitreich.org 70 i+(setf *articles* (reverse *articles*)) 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@@ -115,9 +121,9 @@ 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 "%DayNumber" (format nil "~2,'0d" (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 "%MonthNumber" (format nil "~2,'0d" (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@@ -162,18 +168,20 @@ Err bitreich.org 70 i (articles-by-tag)))) Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 i-;; generates the html of one only article Err bitreich.org 70 i+;; generates the html of only one article Err bitreich.org 70 i ;; this is called in a loop to produce the homepage Err bitreich.org 70 i (defun create-article(article &optional &key (tiny t) (no-text nil)) 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%%" (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+ (article-date article))) Err bitreich.org 70 i+ (template "%%Raw-Date%%" (article-rawdate 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 "%%Date-Url%%" (date-format "%Year-%MonthNumber-%DayNumber" Err bitreich.org 70 i+ (article-date article))) Err bitreich.org 70 i (template "%%Text%%" (if no-text Err bitreich.org 70 i "" Err bitreich.org 70 i (if (and tiny (article-tiny article)) Err bitreich.org 70 i@@ -212,10 +220,11 @@ Err bitreich.org 70 i (prepare "templates/rss-item.tpl" Err bitreich.org 70 i (template "%%Title%%" (article-title article)) Err bitreich.org 70 i (template "%%Description%%" (load-file (format nil "temp/data/~d.html" (article-id article)))) Err bitreich.org 70 i- (let ((date (date-parse (article-date article)))) Err bitreich.org 70 i- (template "%%Date%%" (format nil (date-format "~a, %DayNumber ~a %Year 00:00:00 GMT" date) Err bitreich.org 70 i- (subseq (getf date :dayname) 0 3) Err bitreich.org 70 i- (subseq (getf date :monthname) 0 3)))) Err bitreich.org 70 i+ (template "%%Date%%" (format nil Err bitreich.org 70 i+ (date-format "~a, %DayNumber ~a %Year 00:00:00 GMT" Err bitreich.org 70 i+ (article-date article)) Err bitreich.org 70 i+ (subseq (getf (article-date article) :dayname) 0 3) Err bitreich.org 70 i+ (subseq (getf (article-date article) :monthname) 0 3))) Err bitreich.org 70 i (template "%%Url%%" Err bitreich.org 70 i (format nil "~darticle-~d.html" Err bitreich.org 70 i (getf *config* :url) Err bitreich.org 70 i@@ -238,10 +247,14 @@ Err bitreich.org 70 i (generate "output/html/index-titles.html" (generate-semi-mainpage :no-text t)) Err bitreich.org 70 i Err bitreich.org 70 i ;; produce each article file Err bitreich.org 70 i- (dolist (article *articles*) Err bitreich.org 70 i- (generate (format nil "output/html/article-~d.html" (article-id article)) Err bitreich.org 70 i- (create-article article :tiny nil) Err bitreich.org 70 i- :title (concatenate 'string (getf *config* :title) " : " (article-title article)))) Err bitreich.org 70 i+ (loop for article in *articles* Err bitreich.org 70 i+ do Err bitreich.org 70 i+ (generate (format nil "output/html/~d-~d.html" Err bitreich.org 70 i+ (date-format "%Year-%MonthNumber-%DayNumber" Err bitreich.org 70 i+ (article-date article)) Err bitreich.org 70 i+ (article-id article)) Err bitreich.org 70 i+ (create-article article :tiny nil) Err bitreich.org 70 i+ :title (concatenate 'string (getf *config* :title) " : " (article-title article)))) Err bitreich.org 70 i Err bitreich.org 70 i ;; produce index file for each tag Err bitreich.org 70 i (loop for tag in (articles-by-tag) do Err bitreich.org 70 i@@ -269,7 +282,7 @@ Err bitreich.org 70 i (if (< 80 (length (article-title article))) Err bitreich.org 70 i (subseq (article-title article) 0 80) Err bitreich.org 70 i (article-title article))))) Err bitreich.org 70 i- (replace title (article-date article) :start1 (- (length title) (length (article-date article))))) Err bitreich.org 70 i+ (replace title (article-rawdate article) :start1 (- (length title) (length (article-rawdate article))))) Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 i (getf *config* :gopher-path) Err bitreich.org 70 i@@ -296,6 +309,7 @@ Err bitreich.org 70 i (if (getf *config* :gopher) Err bitreich.org 70 i (create-gopher-hole))) Err bitreich.org 70 i Err bitreich.org 70 i+;;;; EXECUTION Err bitreich.org 70 i Err bitreich.org 70 i (generate-site) Err bitreich.org 70 i 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,7 +1,8 @@ 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+ Err bitreich.org 70 i+

%%Title%%

Err bitreich.org 70 i

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

Err bitreich.org 70 i
Err bitreich.org 70 i %%Text%% Err bitreich.org 70 .