diff options
| author | Charles Cabergs <me@cacharle.xyz> | 2021-01-11 22:06:37 +0100 |
|---|---|---|
| committer | Charles Cabergs <me@cacharle.xyz> | 2021-01-11 22:06:37 +0100 |
| commit | ea7c2a7482b937c4d391402b7a89fb7b9c245992 (patch) | |
| tree | 562bbf42559cac18d0c566dcd77c64fbfcf36523 | |
| parent | d3c3ae47a2937bf0ace994a4bc9928cd2f3605de (diff) | |
| download | temper-ea7c2a7482b937c4d391402b7a89fb7b9c245992.tar.gz temper-ea7c2a7482b937c4d391402b7a89fb7b9c245992.tar.bz2 temper-ea7c2a7482b937c4d391402b7a89fb7b9c245992.zip | |
| -rw-r--r-- | README.md | 7 | ||||
| -rw-r--r-- | builtin.lisp | 4 | ||||
| -rwxr-xr-x | temper.lisp | 32 | ||||
| -rw-r--r-- | test.html | 6 |
4 files changed, 28 insertions, 21 deletions
@@ -21,8 +21,8 @@ Put the result of a form in the template with `<%=`. ```html <ul> - <% (dotimes (_ 10)) %> - <li> <%= i %> </li> + <% (dotimes (n 10)) %> + <li> <%= n %> </li> <% ) %> </ul> ``` @@ -49,3 +49,6 @@ Use the `render` function to include a template in another. and check if `about.lisp.html` exists * [ ] Makefile to compile and install * [ ] escape interpolated value +* [ ] file/directory command line arguments +* [ ] passing template variable in command line +* [ ] extends a base template (like Django) diff --git a/builtin.lisp b/builtin.lisp index 3da200e..8cfc25e 100644 --- a/builtin.lisp +++ b/builtin.lisp @@ -1,7 +1,3 @@ -(load "/home/charles/.clisprc.lisp") -(ql:quickload "uiop") - - (defun make-index (dirname &key (item-tag "li") (surrounding-tag "ul") (include-date nil)) (setf filepaths (uiop:directory-files dirname)) ; (when test (delete-if #'(lambda (x) (not (test x))) filenames)) diff --git a/temper.lisp b/temper.lisp index 9f5350c..36732d2 100755 --- a/temper.lisp +++ b/temper.lisp @@ -1,5 +1,7 @@ #!/usr/bin/clisp +(load "/home/charles/.clisprc.lisp") +(ql:quickload "uiop") (load "helper.lisp") (load "config.lisp") (load "builtin.lisp") @@ -60,16 +62,28 @@ ")")))))) -(defun render-stream (stream &rest args) - (setq tokens (lex (read-all-stream stream))) - (eval (apply #'generate (cons tokens args)))) +(defgeneric render (input &rest args)) -(defun render (filename &rest args) - (with-open-file (stream filename) - (apply #'render-stream (cons stream args)))) +(defmethod render ((input stream) &rest args) + (prog1 + (eval (apply #'generate (cons (lex (read-all-stream input)) args))) + (setf *temper-buf* ""))) -(princ (render-stream *standard-input* 'foo "bon" 'bar "jour")) +(defmethod render ((filename string) &rest args) + (with-open-file (input filename) + (apply #'render (cons input args)))) -; (princ (render "test.html" 'foo "bon" 'bar "jour")) -; (print (make-index "d")) +(when (null *args*) + (princ (render *standard-input*)) + (exit)) + + +(dolist (arg *args*) + (if (uiop:directory-pathname-p arg) + (uiop:collect-sub*directories ; TODO + dirname + (constantly t) + (constantly t) + (lambda (f) (print f))) + (princ (render arg)))) diff --git a/test.html b/test.html deleted file mode 100644 index fada913..0000000 --- a/test.html +++ /dev/null @@ -1,6 +0,0 @@ -<h1><%= foo %> | <%= bar %></h1> -<ul> - <% (dotimes (n 10) %> - <li><%= (+ n 4 5) %></li> - <% ) %> -</ul> |
