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 <solene@dataswamp.org> 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 <div class="article"> Err bitreich.org 70
i <div class="informations"> Err bitreich.org 70
i- <b><a href="article-%%Id%%.html"><em>%%Author%%</em> wrote "%%Title%%" on %%Date%%</a></b> Err bitreich.org 70
i+ <b><a href="article-%%Id%%.html"><em>%%Author%%</em> wrote "%%Title%%" on %%Date%%</a></b>Tags : %%Tags%% Err bitreich.org 70
i </div> Err bitreich.org 70
i <p>%%Text%%</p> Err bitreich.org 70
i </div> Err bitreich.org 70
.
Response:
text/plain