Aserve & CL-EMB
Aserve でテンプレートエンジンの CL-EMB を使ってみました。
hello.tmplを作成
<html> <head><title>テストページ</title></head> <body> <% @var name %> </body> </html>
Lipsコード
(defun to-octets-string (str) (let* ((arr (sb-ext:string-to-octets str :external-format sb-impl::*default-external-format* :null-terminate nil)) (len (length arr)) (ret (make-array len :fill-pointer 0 :element-type 'character))) (dotimes (i len) (vector-push (code-char (elt arr i)) ret)) ret)) (defun MB (str) (princ (to-octets-string str))) (net.aserve:publish :path "/hello" :content-type "text/html; charset=UTF-8" :function #'(lambda (req ent) (net.aserve:with-http-response (req ent) (net.aserve:with-http-body (req ent) (format (net.aserve:request-reply-stream req) (MB (emb:execute-emb #P"/home/lisp/hello.tmpl" :env '(:name "こんにちは!"))))))))