SMOLNET PORTAL home about changes
i- Date now computed from a format YYYYMMDD - id attribute on <article> - 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 013ada82f339f61de56f426824c1c3c1a88bf9b1	/scm/cl-yag/commit/013ada82f339f61de56f426824c1c3c1a88bf9b1.gph	bitreich.org	70
1parent 52bd9a828bdd422d4c4ec8fbd30ba8f5ef253e76	/scm/cl-yag/commit/52bd9a828bdd422d4c4ec8fbd30ba8f5ef253e76.gph	bitreich.org	70
hAuthor: Solene Rapenne <solene@perso.pw>	URL:mailto:solene@perso.pw	bitreich.org	70
iDate:   Wed, 13 Dec 2017 20:35:33 +0100	Err	bitreich.org	70
i	Err	bitreich.org	70
i- Date now computed from a format YYYYMMDD	Err	bitreich.org	70
i- id attribute on <article>	Err	bitreich.org	70
i	Err	bitreich.org	70
iDiffstat:	Err	bitreich.org	70
i  M data/articles.lisp                  |       7 ++++---	Err	bitreich.org	70
i  M generator.lisp                      |      55 +++++++++++++++++++++++++++----	Err	bitreich.org	70
i  M templates/article.tpl               |       2 +-	Err	bitreich.org	70
i	Err	bitreich.org	70
i3 files changed, 53 insertions(+), 11 deletions(-)	Err	bitreich.org	70
i---	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@@ -10,6 +10,7 @@	Err	bitreich.org	70
i    :description     "Yet another website on the net"	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    :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@@ -41,15 +42,15 @@	Err	bitreich.org	70
i 	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 "02.12.2017" :tag "cl-yag"	Err	bitreich.org	70
i+      :id "css" :date "20171202" :tag "cl-yag"	Err	bitreich.org	70
i       :author "lambda" :tiny "Read more")	Err	bitreich.org	70
i 	Err	bitreich.org	70
i ;; README	Err	bitreich.org	70
i (post :title "README"	Err	bitreich.org	70
i-      :id "README" :date "23.11.2017" :tag "cl-yag"	Err	bitreich.org	70
i+      :id "README" :date "20171202" :tag "cl-yag"	Err	bitreich.org	70
i       :author "lambda" :tiny "Read cl-yag's README")	Err	bitreich.org	70
i 	Err	bitreich.org	70
i ;; 1	Err	bitreich.org	70
i (post :title "My first post"	Err	bitreich.org	70
i-      :id "1" :date "29.04.2016" :tag "pony"	Err	bitreich.org	70
i+      :id "1" :date "20160429" :tag "pony"	Err	bitreich.org	70
i       :tiny "This is the first message" :author "Solène")	Err	bitreich.org	70
1diff --git a/generator.lisp b/generator.lisp	/scm/cl-yag/file/generator.lisp.gph	bitreich.org	70
i@@ -1,17 +1,21 @@	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+                       "Friday" "Saturday" "Sunday"))	Err	bitreich.org	70
i+(defparameter *months* '("January" "February" "March" "April"	Err	bitreich.org	70
i+                         "May" "June" "July" "August" "September"	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 short)	Err	bitreich.org	70
i+(defstruct article title tag date id tiny author)	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) (short nil))	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-                      :short short	Err	bitreich.org	70
i                       :id id)	Err	bitreich.org	70
i         *articles*))	Err	bitreich.org	70
i 	Err	bitreich.org	70
i@@ -26,6 +30,31 @@	Err	bitreich.org	70
i (setf *articles* (reverse *articles*))	Err	bitreich.org	70
i 	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+	Err	bitreich.org	70
i+;; parse the date to	Err	bitreich.org	70
i+(defun date-parse(date)	Err	bitreich.org	70
i+  (if (= 8 (length date))	Err	bitreich.org	70
i+      (let* ((year     (parse-integer date :start 0 :end 4))	Err	bitreich.org	70
i+             (monthnum (parse-integer date :start 4 :end 6))	Err	bitreich.org	70
i+             (daynum   (parse-integer date :start 6 :end 8))	Err	bitreich.org	70
i+             (day      (nth (get-day-of-week daynum monthnum year) *days*))	Err	bitreich.org	70
i+             (month    (nth (- monthnum 1) *months*)))	Err	bitreich.org	70
i+        (list	Err	bitreich.org	70
i+         :dayname day	Err	bitreich.org	70
i+         :daynumber daynum	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+	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 (defun replace-all (string part replacement &key (test #'char=))	Err	bitreich.org	70
i   (with-output-to-string (out)	Err	bitreich.org	70
i@@ -82,6 +111,16 @@	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+;; 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+    (template "%DayName"     (getf date :dayname))	Err	bitreich.org	70
i+    (template "%DayNumber"   (write-to-string (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 "%Year"        (write-to-string (getf date :year )))	Err	bitreich.org	70
i+    output))	Err	bitreich.org	70
i+	Err	bitreich.org	70
i ;; simplify the declaration of a new page type	Err	bitreich.org	70
i (defmacro prepare(template &body code)	Err	bitreich.org	70
i   `(progn	Err	bitreich.org	70
i@@ -129,9 +168,11 @@	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%%"   (article-date 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 "%%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+           (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 "%%Text%%"   (if no-text	Err	bitreich.org	70
i                                       ""	Err	bitreich.org	70
i@@ -166,7 +207,7 @@	Err	bitreich.org	70
i (defun generate-rss-item()	Err	bitreich.org	70
i   (apply #'concatenate 'string	Err	bitreich.org	70
i          (loop for article in *articles*	Err	bitreich.org	70
i-            for i from 1 to (if (> (length *articles*) (getf *config* :rss-item-number)) (getf *config* :rss-item-number) (length *articles*))	Err	bitreich.org	70
i+            for i from 1 to (min (length *articles*) (getf *config* :rss-item-number))	Err	bitreich.org	70
i             collect	Err	bitreich.org	70
i               (prepare "templates/rss-item.tpl"	Err	bitreich.org	70
i                        (template "%%Title%%" (article-title article))	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,5 +1,5 @@	Err	bitreich.org	70
i 	Err	bitreich.org	70
i-<article>	Err	bitreich.org	70
i+<article id="%%Raw-Date%%">	Err	bitreich.org	70
i   <header>	Err	bitreich.org	70
i     <h1><a href="article-%%Id%%.html">%%Title%%</a></h1>	Err	bitreich.org	70
i     <p>Written by <em>%%Author%%</em>, on %%Date%%.<br/>Tags: %%Tags%%</p>	Err	bitreich.org	70
.
Response: text/plain
Original URLgopher://bitreich.org/0/scm/cl-yag/commit/013ada82f339f61...
Content-Typetext/plain; charset=utf-8