SMOLNET PORTAL home about changes
itag support - 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 b6217bd19691e99255d6ea2ae57c14c6d48b073a	/scm/cl-yag/commit/b6217bd19691e99255d6ea2ae57c14c6d48b073a.gph	bitreich.org	70
1parent 304d6befcc4319581253099320092cb6cbee5bd1	/scm/cl-yag/commit/304d6befcc4319581253099320092cb6cbee5bd1.gph	bitreich.org	70
hAuthor: solene rapenne <solene@dataswamp.org>	URL:mailto:solene@dataswamp.org	bitreich.org	70
iDate:   Tue,  3 May 2016 14:03:25 +0200	Err	bitreich.org	70
i	Err	bitreich.org	70
itag support	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  A data/2.txt                          |       1 +	Err	bitreich.org	70
i  M data/articles.lisp                  |       4 ++--	Err	bitreich.org	70
i  M generator.lisp                      |      51 +++++++++++++++++++++++++++++--	Err	bitreich.org	70
i  M template/layout.tpl                 |       1 +	Err	bitreich.org	70
i  A template/one-tag.tpl                |       1 +	Err	bitreich.org	70
i	Err	bitreich.org	70
i5 files changed, 54 insertions(+), 4 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/data/2.txt b/data/2.txt	/scm/cl-yag/file/data/2.txt.gph	bitreich.org	70
i@@ -0,0 +1 @@	Err	bitreich.org	70
i+<p>hello</p>	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@@ -18,7 +18,7 @@	Err	bitreich.org	70
i ;; :tiny can be omitted and will be replaced by the full article text	Err	bitreich.org	70
i (defvar *articles*	Err	bitreich.org	70
i   (list	Err	bitreich.org	70
i-   (list :id "2" :date "30 April 2016" :title "Another message" :short "New version available")   	Err	bitreich.org	70
i-   (list :id "1" :date "29 April 2016" :title "My first message" :short "This is my first message" :author "Solène")	Err	bitreich.org	70
i+   (list :id "2" :date "30 April 2016" :tag "lisp" :title "Another message" :short "New version available")   	Err	bitreich.org	70
i+   (list :id "1" :date "29 April 2016":tag "pony code" :title "My first message" :short "This is my first message" :author "Solène")	Err	bitreich.org	70
i    ))	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@@ -14,6 +14,20 @@	Err	bitreich.org	70
i                                when pos do (write-string replacement out)	Err	bitreich.org	70
i                                while pos)))	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+;; common-lisp don't have a split string function natively	Err	bitreich.org	70
i+;; thanks https://gist.github.com/siguremon/1174988	Err	bitreich.org	70
i+(defun split-str (string &optional (separator " "))	Err	bitreich.org	70
i+  (split-str-1 string separator))	Err	bitreich.org	70
i+(defun split-str-1 (string &optional (separator " ") (r nil))	Err	bitreich.org	70
i+  (let ((n (position separator string	Err	bitreich.org	70
i+                     :from-end t	Err	bitreich.org	70
i+                     :test #'(lambda (x y)	Err	bitreich.org	70
i+                               (find y x :test #'string=)))))	Err	bitreich.org	70
i+    (if n	Err	bitreich.org	70
i+        (split-str-1 (subseq string 0 n) separator (cons (subseq string (1+ n)) r))	Err	bitreich.org	70
i+            (cons string r))))	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+	Err	bitreich.org	70
i ;; load a file as a string	Err	bitreich.org	70
i ;; we escape ~ to avoid failures with format	Err	bitreich.org	70
i (defun load-file(path)	Err	bitreich.org	70
i@@ -47,6 +61,21 @@	Err	bitreich.org	70
i      (save-file ,name	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+  (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+              (loop for tag in (split-str (getf article :tag)) do ;; for each word in tag keyword	Err	bitreich.org	70
i+                    (setf (getf tag-list (intern tag "KEYWORD")) ;; we create the keyword is inexistent and add ID to :value	Err	bitreich.org	70
i+                          (list	Err	bitreich.org	70
i+                           :name tag	Err	bitreich.org	70
i+                           :value (push (getf article :id) (getf (getf tag-list (intern tag "KEYWORD")) :value)))))))	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 	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@@ -64,18 +93,28 @@	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 "%%Body%%" body)	Err	bitreich.org	70
i            output))	Err	bitreich.org	70
i 	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-;; Homepage generation	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 	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 	Err	bitreich.org	70
i-;; Generate the items for the xml	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@@ -107,9 +146,17 @@	Err	bitreich.org	70
i   (dolist (article *articles*)	Err	bitreich.org	70
i     (generate (format nil "article-~d.html" (getf article :id))	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+        (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
i   ;;(generate-file-rss)	Err	bitreich.org	70
i   (save-file "rss.xml" (generate-rss))	Err	bitreich.org	70
i+  	Err	bitreich.org	70
i   )	Err	bitreich.org	70
i 	Err	bitreich.org	70
i (generate-site)	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+	Err	bitreich.org	70
1diff --git a/template/layout.tpl b/template/layout.tpl	/scm/cl-yag/file/template/layout.tpl.gph	bitreich.org	70
i@@ -9,6 +9,7 @@	Err	bitreich.org	70
i 	Err	bitreich.org	70
i     <div id="top">	Err	bitreich.org	70
i       <a href="index.html">Home</a> <a href="rss.xml">Rss</a>	Err	bitreich.org	70
i+      <p>Tags : %%Tags%%</p>	Err	bitreich.org	70
i     </div>	Err	bitreich.org	70
i 	Err	bitreich.org	70
i     <div id="content">	Err	bitreich.org	70
1diff --git a/template/one-tag.tpl b/template/one-tag.tpl	/scm/cl-yag/file/template/one-tag.tpl.gph	bitreich.org	70
i@@ -0,0 +1 @@	Err	bitreich.org	70
i+ <a href="tag-%%Name%%.html">%%Name%%</a>	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/cl-yag/commit/b6217bd19691e99...
Content-Typetext/plain; charset=utf-8