comments - cl-yag - Common Lisp Yet Another website Generator
 (HTM) git clone git://bitreich.org/cl-yag/ git://enlrupgkhuxnvlhsf6lc3fziv5h2hhfrinws65d7roiv6bfj7d652fid.onion/cl-yag/
 (DIR) Log
 (DIR) Files
 (DIR) Refs
 (DIR) Tags
 (DIR) README
 (DIR) LICENSE
       ---
 (DIR) commit e0a4614444c18e9840e4fa30d832da9fafedfa5e
 (DIR) parent 91e116792c8d8cd9319a4269a6465834b4116cf2
 (HTM) Author: Solene Rapenne <solene@dataswamp.org>
       Date:   Sat, 30 Apr 2016 18:21:48 +0200
       
       comments
       
       Diffstat:
         M generator.lisp                      |      21 +++++++++++++--------
       
       1 file changed, 13 insertions(+), 8 deletions(-)
       ---
 (DIR) diff --git a/generator.lisp b/generator.lisp
       @@ -1,8 +1,7 @@
        (load "data/articles.lisp")
        
       +;; common-lisp don't have a replace string function natively
        (defun replace-all (string part replacement &key (test #'char=))
       -  "Returns a new string in which all the occurences of the part 
       -is replaced with replacement."
          (with-output-to-string (out)
                                 (loop with part-length = (length part)
                                       for old-pos = 0 then (+ pos part-length)
       @@ -14,14 +13,14 @@ is replaced with replacement."
                                                        :end (or pos (length string)))
                                       when pos do (write-string replacement out)
                                       while pos)))
       -; load a file as a string
       +;; load a file and return it as a string
        (defun slurp-file(path)
          (with-open-file (stream path)
                          (let ((data (make-string (file-length stream))))
                            (read-sequence data stream)
                            data)))
        
       -; save a string in a file
       +;; save a string in a file
        (defun save-file(path data)
          (with-open-file (stream (concatenate 'string "output/" path) :direction :output :if-exists :supersede)
            (format stream data)))
       @@ -39,6 +38,7 @@ is replaced with replacement."
               output)))
        
        ;; generates the html of one only article
       +;; this is called in a loop to produce the homepage
        (defun create-article(article &optional &key (tiny t))
          (prepare "template/article.tpl"
                   (template "%%Author%%" (if (member :author article) (getf article :author) (getf *config* :webmaster)))
       @@ -48,21 +48,25 @@ is replaced with replacement."
                   (template "%%Text%%" (if (and tiny (member :tiny article))
                                            (getf article :tiny) (slurp-file (format nil "data/~d.txt" (getf article :id)))))))
        
       -;; Layout generation
       +;; return a html string
       +;; produce the code of a whole page with title+layout with the parameter as the content
        (defun generate-layout(body)
          (let ((output (slurp-file "template/layout.tpl")))
            (template "%%Title%%" (getf *config* :title))
            (template "%%Body%%" body)
            output))
       -  
       -; Homepage generation
       +
       +
       +;; Homepage generation
       +;; generate each article and concatenate the whole
        (defun generate-mainpage()
          (format nil "~{~d~}"
                  (loop for article in *articles* collect
                        (create-article article :tiny t))))
        
        
       -; ENGINE START !
       +;; ENGINE START !
       +;; This is function called when running the tool
        (defun generate-site()
        
          ; produce index.html
       @@ -75,6 +79,7 @@ is replaced with replacement."
                      (create-article article :tiny nil)))
        
          ;;(generate-file-rss)
       +  ;;not done yet
          )