SMOLNET PORTAL home about changes
iAdd choice of html conveter - 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 4ef4f5a4e82381039878f615749ad4de40f29c30	/scm/cl-yag/commit/4ef4f5a4e82381039878f615749ad4de40f29c30.gph	bitreich.org	70
1parent 76cfe4f9da795b24680eba4e8c940e042b1d6e11	/scm/cl-yag/commit/76cfe4f9da795b24680eba4e8c940e042b1d6e11.gph	bitreich.org	70
hAuthor: solene rapenne <solene@dataswamp.org>	URL:mailto:solene@dataswamp.org	bitreich.org	70
iDate:   Fri, 15 Dec 2017 00:49:21 +0100	Err	bitreich.org	70
i	Err	bitreich.org	70
iAdd choice of html conveter	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M Makefile                            |       6 ------	Err	bitreich.org	70
i  M data/articles.lisp                  |      12 ++++++++++--	Err	bitreich.org	70
i  M generator.lisp                      |      62 +++++++++++++++++++++++--------	Err	bitreich.org	70
i	Err	bitreich.org	70
i3 files changed, 56 insertions(+), 24 deletions(-)	Err	bitreich.org	70
i---	Err	bitreich.org	70
1diff --git a/Makefile b/Makefile	/scm/cl-yag/file/Makefile.gph	bitreich.org	70
i@@ -1,9 +1,6 @@	Err	bitreich.org	70
i LISP=          sbcl	Err	bitreich.org	70
i-MD=            multimarkdown -t html -o	Err	bitreich.org	70
i 	Err	bitreich.org	70
i HTMLDIR=       temp/data	Err	bitreich.org	70
i-ARTICLES!=     ls data/*.md	Err	bitreich.org	70
i-HTML=          $(ARTICLES:.md=.html)	Err	bitreich.org	70
i 	Err	bitreich.org	70
i all: clean dirs html	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -16,9 +13,6 @@ dirs:	Err	bitreich.org	70
i         mkdir -p "output/html/static"	Err	bitreich.org	70
i         mkdir -p "output/gopher"	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-.SUFFIXES: .md .html	Err	bitreich.org	70
i-.md.html:	Err	bitreich.org	70
i-        $(MD) "$(HTMLDIR)/$(@F)" "$<"	Err	bitreich.org	70
i 	Err	bitreich.org	70
i clean:	Err	bitreich.org	70
i         rm -fr output/html/* output/gopher/* "temp"	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@@ -11,6 +11,7 @@	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+   :default-converter :markdown2	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@@ -23,8 +24,13 @@	Err	bitreich.org	70
i    ))	Err	bitreich.org	70
i 	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-(converter :name :markdown  :extension ".md" :command "peg-markdown -o %IN")	Err	bitreich.org	70
i-(converter :name :markdown2 :extension ".md" :command "multimarkdown -o %IN")	Err	bitreich.org	70
i+(converter :name :markdown  :extension ".md"  :command "peg-markdown -t html -o %OUT data/%IN")	Err	bitreich.org	70
i+(converter :name :markdown2 :extension ".md"  :command "multimarkdown -t html -o %OUT data/%IN")	Err	bitreich.org	70
i+(converter :name :org-mode  :extension ".org"	Err	bitreich.org	70
i+           :command (concatenate 'string	Err	bitreich.org	70
i+                                 "emacs data/%IN --batch --eval '(with-temp-buffer (org-mode) "	Err	bitreich.org	70
i+                                 "(insert-file \"%IN\") (org-html-export-as-html nil nil nil t)"	Err	bitreich.org	70
i+                                 "(princ (buffer-string)))' --kill | tee %OUT"))	Err	bitreich.org	70
i 	Err	bitreich.org	70
i ;; Define your articles and their display-order on the website below.	Err	bitreich.org	70
i ;; Display Order is 'lifo', i.e. the top entry in this list gets displayed as the topmost entry.	Err	bitreich.org	70
i@@ -40,6 +46,8 @@	Err	bitreich.org	70
i ;; :tiny    can be omitted.   If so, the article's full text gets displayed on the all-articles view. (most people don't want this.)	Err	bitreich.org	70
i 	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+(post :title "test"	Err	bitreich.org	70
i+      :id "t" :date "20171214" :tag "f" :converter :org-mode)	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 "20171202" :tag "cl-yag"	Err	bitreich.org	70
1diff --git a/generator.lisp b/generator.lisp	/scm/cl-yag/file/generator.lisp.gph	bitreich.org	70
i@@ -9,11 +9,13 @@	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 rawdate)	Err	bitreich.org	70
i+(defstruct article title tag date id tiny author rawdate converter)	Err	bitreich.org	70
i (defstruct converter name command extension)	Err	bitreich.org	70
i 	Err	bitreich.org	70
i ;;;; FUNCTIONS	Err	bitreich.org	70
i 	Err	bitreich.org	70
i+(require 'asdf)	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@@ -39,22 +41,26 @@	Err	bitreich.org	70
i          :year year))	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+(defun post(&optional &key title tag date id (tiny nil) (author nil) (converter 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+                      :id id	Err	bitreich.org	70
i+                      :converter converter)	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+  (setf *converters*	Err	bitreich.org	70
i+        (append	Err	bitreich.org	70
i+         (list name	Err	bitreich.org	70
i+               (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@@ -117,6 +123,23 @@	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+;; get the converter object of "article"	Err	bitreich.org	70
i+(defmacro with-converter(&body code)	Err	bitreich.org	70
i+  `(progn	Err	bitreich.org	70
i+     (let ((converter-name (if (article-converter article)	Err	bitreich.org	70
i+                               (article-converter article)	Err	bitreich.org	70
i+                             (getf *config* :default-converter))))	Err	bitreich.org	70
i+       (let ((converter-object (getf *converters* converter-name)))	Err	bitreich.org	70
i+         ,@code))))	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+(defun use-converter-to-html(article)	Err	bitreich.org	70
i+  (with-converter	Err	bitreich.org	70
i+   (let ((output (converter-command converter-object)))	Err	bitreich.org	70
i+     (ensure-directories-exist "temp/data/")	Err	bitreich.org	70
i+     (template "%IN" (concatenate 'string (article-id article) (converter-extension converter-object)))	Err	bitreich.org	70
i+     (template "%OUT" (concatenate 'string "temp/data/" (article-id article) ".html"))	Err	bitreich.org	70
i+     (uiop:run-program output))))	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@@ -240,21 +263,25 @@	Err	bitreich.org	70
i 	Err	bitreich.org	70
i ;; We do all the website	Err	bitreich.org	70
i (defun create-html-site()	Err	bitreich.org	70
i-  ;; produce index.html	Err	bitreich.org	70
i-  (generate "output/html/index.html" (generate-semi-mainpage))	Err	bitreich.org	70
i-	Err	bitreich.org	70
i-  ;; produce index-titles.html where there are only articles titles	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   (loop for article in *articles*	Err	bitreich.org	70
i         do	Err	bitreich.org	70
i+        ;; use the article's converter to get html code of it	Err	bitreich.org	70
i+        (use-converter-to-html article)	Err	bitreich.org	70
i+	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.html	Err	bitreich.org	70
i+  (generate "output/html/index.html" (generate-semi-mainpage))	Err	bitreich.org	70
i+	Err	bitreich.org	70
i+  ;; produce index-titles.html where there are only articles titles	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 index file for each tag	Err	bitreich.org	70
i   (loop for tag in (articles-by-tag) do	Err	bitreich.org	70
i@@ -293,10 +320,12 @@	Err	bitreich.org	70
i                output))	Err	bitreich.org	70
i   	Err	bitreich.org	70
i   ;; produce each article file (only a copy/paste in fact)	Err	bitreich.org	70
i-  (dolist (article *articles*)	Err	bitreich.org	70
i-    (let ((id (article-id article)))	Err	bitreich.org	70
i-      (save-file (format nil "output/gopher/article-~d.txt" id)	Err	bitreich.org	70
i-                 (load-file (format nil "data/~d.md" id)))))	Err	bitreich.org	70
i+  (loop for article in *articles*	Err	bitreich.org	70
i+        do	Err	bitreich.org	70
i+        (with-converter	Err	bitreich.org	70
i+         (let ((id (article-id article)))	Err	bitreich.org	70
i+           (save-file (format nil "output/gopher/article-~d.txt" id)	Err	bitreich.org	70
i+                      (load-file (format nil "data/~d~d" id (converter-extension converter-object)))))))	Err	bitreich.org	70
i   	Err	bitreich.org	70
i   )	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -313,4 +342,5 @@	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
i (quit)	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/cl-yag/commit/4ef4f5a4e823810...
Content-Typetext/plain; charset=utf-8