From 82b803603f519bcd91eb4a2fbc9bb5c2bfa6e168 Mon Sep 17 00:00:00 2001 From: Charles Cabergs Date: Sat, 9 Jan 2021 21:45:15 +0100 Subject: Added render functions, Splitting into multiple files --- temper.lisp | 37 +++++++++++++------------------------ 1 file changed, 13 insertions(+), 24 deletions(-) mode change 100644 => 100755 temper.lisp (limited to 'temper.lisp') diff --git a/temper.lisp b/temper.lisp old mode 100644 new mode 100755 index a039f9c..2bd63cc --- a/temper.lisp +++ b/temper.lisp @@ -1,14 +1,8 @@ -(defun read-all () - (let ((line (read-line *standard-input* nil))) - (if line - (concatenate 'string line '(#\linefeed) (read-all)) - ""))) +#!/usr/bin/env clisp +(load "helper.lisp") +(load "config.lisp") -(defconstant +temper-open+ "<%") -(defconstant +temper-close+ "%>") -(defconstant +temper-close-len+ (length +temper-close+)) -(defconstant +temper-interpolate+ #\=) (defun lex (input) (let ((pos (search +temper-open+ input))) @@ -50,14 +44,6 @@ tokens))) -(defun rest-keys (&rest args) - (if (null args) - '() - (destructuring-bind (key value &rest args) args - (cons (list key value) (apply #'rest-keys args))))) - - - (defun generate (tokens &rest args) `(let ,(apply #'rest-keys args) (progn @@ -69,12 +55,15 @@ ")")))))) -(setq tokens (lex (read-all))) -(setq code (generate tokens 'foo "bonjour" 'bar "aurevoir")) -; (format t "~S" code) -(princ (eval code)) -; (setq res (generate (lex (read-all)))) -; (format t "~A" (eval res)) +(defun render-stream (stream &rest args) + (setq tokens (lex (read-all-stream stream))) + (eval (apply #'generate (cons tokens args)))) + +(defun render (filename &rest args) + (with-open-file (stream filename) + (apply #'render-stream (cons stream args)))) + +; (princ (render-stream *standard-input* 'foo "bon" 'bar "jour")) -; (format t "~S" (rest-keys :baz 10 :foo 4 :bar 5)) +(princ (render "test.html" 'foo "bon" 'bar "jour")) -- cgit