iadd support for tags in articles + improve code - 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 e94fc554f9a4f95d8b8df4ea8629a330ef129d13 /scm/cl-yag/commit/e94fc554f9a4f95d8b8df4ea8629a330ef129d13.gph bitreich.org 70 1parent 2031387fa4e3079bf8d57e7b3e009b3305ec4c5a /scm/cl-yag/commit/2031387fa4e3079bf8d57e7b3e009b3305ec4c5a.gph bitreich.org 70 hAuthor: solene rapenne URL:mailto:solene@dataswamp.org bitreich.org 70 iDate: Tue, 3 May 2016 14:58:53 +0200 Err bitreich.org 70 i Err bitreich.org 70 iadd support for tags in articles + improve code Err bitreich.org 70 i Err bitreich.org 70 iDiffstat: Err bitreich.org 70 i M generator.lisp | 64 +++++++++++++++++++------------ Err bitreich.org 70 i M template/article.tpl | 2 +- Err bitreich.org 70 i Err bitreich.org 70 i2 files changed, 41 insertions(+), 25 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@@ -37,6 +37,11 @@ Err bitreich.org 70 i data)) Err bitreich.org 70 i "~" "~~")) Err bitreich.org 70 i Err bitreich.org 70 i+;; we have to remove the quotes Err bitreich.org 70 i+;; when using collect in a loop Err bitreich.org 70 i+(defun strip-quotes(input) Err bitreich.org 70 i+ (format nil "~{~d~}" input)) Err bitreich.org 70 i+ Err bitreich.org 70 i ;; save a string in a file Err bitreich.org 70 i (defun save-file(path data) Err bitreich.org 70 i (with-open-file (stream (concatenate 'string "output/" path) :direction :output :if-exists :supersede) Err bitreich.org 70 i@@ -61,7 +66,7 @@ Err bitreich.org 70 i (generate-layout ,@data)))) Err bitreich.org 70 i Err bitreich.org 70 i ;; generate the list of tags Err bitreich.org 70 i-(defun the-tags() Err bitreich.org 70 i+(defun articles-by-tag() Err bitreich.org 70 i (let ((tag-list)) Err bitreich.org 70 i (loop for article in *articles* do Err bitreich.org 70 i (if (getf article :tag nil) ;; we don't want an error if no tag Err bitreich.org 70 i@@ -73,8 +78,21 @@ Err bitreich.org 70 i (loop for i from 1 to (length tag-list) by 2 collect ;; removing the keywords Err bitreich.org 70 i (nth i tag-list)))) Err bitreich.org 70 i Err bitreich.org 70 i- Err bitreich.org 70 i- Err bitreich.org 70 i+;; generates the html of the list of tags for an article Err bitreich.org 70 i+(defun get-tag-list-article(&optional article) Err bitreich.org 70 i+ (strip-quotes Err bitreich.org 70 i+ (mapcar #'(lambda (item) Err bitreich.org 70 i+ (prepare "template/one-tag.tpl" (template "%%Name%%" item))) Err bitreich.org 70 i+ (split-str (getf article :tag))))) Err bitreich.org 70 i+ Err bitreich.org 70 i+;; generates the html of the whole list of tags Err bitreich.org 70 i+(defun get-tag-list() Err bitreich.org 70 i+ (strip-quotes Err bitreich.org 70 i+ (mapcar #'(lambda (item) Err bitreich.org 70 i+ (prepare "template/one-tag.tpl" Err bitreich.org 70 i+ (template "%%Name%%" (getf item :name)))) 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 ;; this is called in a loop to produce the homepage Err bitreich.org 70 i@@ -84,6 +102,7 @@ Err bitreich.org 70 i (template "%%Date%%" (getf article :date)) Err bitreich.org 70 i (template "%%Title%%" (getf article :title)) Err bitreich.org 70 i (template "%%Id%%" (getf article :id)) Err bitreich.org 70 i+ (template "%%Tags%%" (get-tag-list-article article)) Err bitreich.org 70 i (template "%%Text%%" (if (and tiny (member :tiny article)) Err bitreich.org 70 i (getf article :tiny) (load-file (format nil "data/~d.txt" (getf article :id))))))) Err bitreich.org 70 i Err bitreich.org 70 i@@ -92,38 +111,35 @@ Err bitreich.org 70 i (defun generate-layout(body) Err bitreich.org 70 i (prepare "template/layout.tpl" Err bitreich.org 70 i (template "%%Title%%" (getf *config* :title)) Err bitreich.org 70 i- (template "%%Tags%%" Err bitreich.org 70 i- (format nil "~{~d~}" (loop for tag in (the-tags) collect Err bitreich.org 70 i- (prepare "template/one-tag.tpl" Err bitreich.org 70 i- (template "%%Name%%" (getf tag :name)))))) Err bitreich.org 70 i+ (template "%%Tags%%" (get-tag-list)) Err bitreich.org 70 i (template "%%Body%%" body) Err bitreich.org 70 i output)) Err bitreich.org 70 i Err bitreich.org 70 i Err bitreich.org 70 i ;; html generation of index homepage Err bitreich.org 70 i (defun generate-semi-mainpage() Err bitreich.org 70 i- (format nil "~{~d~}" Err bitreich.org 70 i- (loop for article in *articles* collect Err bitreich.org 70 i- (create-article article :tiny t)))) Err bitreich.org 70 i+ (strip-quotes Err bitreich.org 70 i+ (loop for article in *articles* collect Err bitreich.org 70 i+ (create-article article :tiny t)))) Err bitreich.org 70 i Err bitreich.org 70 i ;; html generation of a tag homepage Err bitreich.org 70 i (defun generate-tag-mainpage(articles-in-tag) Err bitreich.org 70 i- (format nil "~{~d~}" Err bitreich.org 70 i- (loop for article in *articles* Err bitreich.org 70 i- when (member (getf article :id) articles-in-tag :test #'equal) Err bitreich.org 70 i- collect (create-article article :tiny t)))) Err bitreich.org 70 i+ (strip-quotes Err bitreich.org 70 i+ (loop for article in *articles* Err bitreich.org 70 i+ when (member (getf article :id) articles-in-tag :test #'equal) Err bitreich.org 70 i+ collect (create-article article :tiny t)))) Err bitreich.org 70 i Err bitreich.org 70 i ;; xml generation of the items for the rss Err bitreich.org 70 i (defun generate-rss-item() Err bitreich.org 70 i- (format nil "~{~d~}" Err bitreich.org 70 i- (loop for article in *articles* collect Err bitreich.org 70 i- (prepare "template/rss-item.tpl" Err bitreich.org 70 i- (template "%%Title%%" (getf article :title)) Err bitreich.org 70 i- (template "%%Description%%" (getf article :short "")) Err bitreich.org 70 i- (template "%%Url%%" Err bitreich.org 70 i- (format nil "~d/article-~d.html" Err bitreich.org 70 i- (getf *config* :url) Err bitreich.org 70 i- (getf article :id))))))) Err bitreich.org 70 i+ (strip-quotes Err bitreich.org 70 i+ (loop for article in *articles* collect Err bitreich.org 70 i+ (prepare "template/rss-item.tpl" Err bitreich.org 70 i+ (template "%%Title%%" (getf article :title)) Err bitreich.org 70 i+ (template "%%Description%%" (getf article :short "")) Err bitreich.org 70 i+ (template "%%Url%%" Err bitreich.org 70 i+ (format nil "~d/article-~d.html" Err bitreich.org 70 i+ (getf *config* :url) Err bitreich.org 70 i+ (getf article :id))))))) Err bitreich.org 70 i Err bitreich.org 70 i ;; Generate the rss xml data Err bitreich.org 70 i (defun generate-rss() Err bitreich.org 70 i@@ -147,7 +163,7 @@ Err bitreich.org 70 i (create-article article :tiny nil))) 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 (the-tags) do Err bitreich.org 70 i+ (loop for tag in (articles-by-tag) do Err bitreich.org 70 i (generate (format nil"tag-~d.html" (getf tag :NAME)) Err bitreich.org 70 i (generate-tag-mainpage (getf tag :VALUE)))) Err bitreich.org 70 i Err bitreich.org 70 1diff --git a/template/article.tpl b/template/article.tpl /scm/cl-yag/file/template/article.tpl.gph bitreich.org 70 i@@ -1,6 +1,6 @@ Err bitreich.org 70 i
Err bitreich.org 70 i
Err bitreich.org 70 i- %%Author%% wrote "%%Title%%" on %%Date%% Err bitreich.org 70 i+ %%Author%% wrote "%%Title%%" on %%Date%%Tags : %%Tags%% Err bitreich.org 70 i
Err bitreich.org 70 i

%%Text%%

Err bitreich.org 70 i
Err bitreich.org 70 .