Tag: HTML
FranzのAllegroServeの一部です。リストで表現したツリーからHTMLを出力するためのライブラリです。
(defpackage :htmlgen.use (:use :cl :net.html.generator)) (in-package :htmlgen.use) (html (:html (:head (:title "タイトル")) (:body (:p "段落")))) ;=> "</html>" ;-> <html><head><title>タイトル</title></head><body><p>段落</p></body></html>
基本はnet.html.generator:htmlマクロです。このマクロは、ツリーから変換したHTMLをnet.html.generator:*html-stream*に出力します。特に指定しない場合、*html-stream*は標準出力です。
また、*html-stream*を簡単に設定するために、net.html.generator:html-streamというマクロも用意されています。
;; 部分的なツリーも変換できる (html (:p "段落")) ;-> <p>段落</p> ;; 文字列は単純に出力される (html "テキスト") ;-> テキスト ;; 直接タグを出力することもできる (html "<em>強調</em>") ;-> <em>強調</em> ;; キーワードは開始タグとして解釈される (html :br) ;-> <br> ;; HTMLに存在しない要素をキーワードに指定するとエラーになる (html :abc) ;>> Error: unknown html keyword :ABC ;; 最初の要素がキーワードのリストは要素として解釈される (html (:code "コード")) ;-> <code>コード</code> ;; 最初の要素がキーワードのリストのリストは属性を持つ要素として解釈される (html ((:a :href "URL") "リンク")) ;-> <a HREF="URL">リンク</a> ;; それ以外の式はLispの式として評価されるが出力はされない (html (list 0 1 2)) ;=> (0 1 2)