;; -*- lisp -*-
(in-package :parse-html)
(defun write-lhtml (lhtml stream)
(walk-lhtml lhtml
(lambda (tag-name attributes body)
(write-char #\< stream)
(write-string (string-downcase tag-name) stream)
(when attributes
(loop
for (key value) on attributes by #'cddr
for quote = (if (position #\' value)
#\"
#\')
do (write-char #\Space stream)
do (write-string (string-downcase key) stream)
do (write-char #\= stream)
do (write-char quote stream)
do (write-string value stream)
do (write-char quote stream)))
(if body
(progn
(write-char #\> stream)
(dolist (b body) (write-lhtml b stream))
(write-char #\< stream)
(write-string (string-downcase tag-name) stream)
(write-char #\> stream))
(progn
(write-string "/>" stream))))
(lambda (string)
(write-string string stream))))