anchor.diff:                   (not (tag-must-close? tag)))
           (html-format "/"))
         (html-format ">")
  -      (when (multiline-tag? tag)
  +      (when (and (multiline-tag? tag) body)
           (html-format "~%"))
         (when body
           (mapcar (lambda (line)
                     (html-format (escape-tildes line)))
                   body))
         (when (or body (tag-must-close? tag))
  -        (when (multiline-tag? tag)
  +        (when (and (multiline-tag? tag) body)
             (html-format "~%"))
           (html-format "</~A>" tag))
  -      (when (or (multiline-tag? tag)
  -                (newline-tag? tag))
  +      (when (and body (or (multiline-tag? tag)
  +                          (newline-tag? tag)))
           (html-format "~%"))
         result)))
   
  +(assert (equal (html :b "hello there")
  +               "<b>hello there</b>"))
  +(assert (equal (html :b)
  +               "<b/>"))
  +(assert (equal (html :p "hello there") "
  +<p>
  +hello there
  +</p>
  +"))
  +(assert (equal (html :p)
  +               "<p/>"))
  +(assert (equal (html :title "hello there") "
  +<title>hello there</title>
  +"))
  +(assert (equal (html :title)
  +               "<title/>"))
  +(assert (equal (html :link)
  +               "<link></link>"))
  +(assert (equal (html :script)
  +               "<script></script>"))
  +(assert (equal (html :a '((:href "http://www.cgore.com")) "Chris Gore")
  +               "<a href=\"http://www.cgore.com\">Chris Gore</a>"))
  +(assert (equal (html :a '(("href" "http://www.cgore.com")) "Chris Gore")
  +               "<a href=\"http://www.cgore.com\">Chris Gore</a>"))
  +
   (defun html-comment (&rest rest)
     "This generates and HTML style inline comment.  Usually you don't want to
  -  even really use this, you should just be using normal Lisp comments in your
  -  code, but hey, do what you want."
  +even really use this, you should just be using normal Lisp comments in your
  +code, but hey, do what you want."
     (apply #'strcat (append '("<!-- ") (mapcar #'to-string rest) '(" -->"))))
   
   (function-alias 'html-comment '!--)
  
positive.code:                                  (to-string (second arg)))))
                    (setf arg (to-string arg))))
                args)
        (when (or (multiline-tag? tag)
                  (newline-tag? tag))
          (html-format "~%"))
        (html-format "<~A" tag)
        (when args
  
negative.code:         ((stringp s) s)
          (t (format nil "~A" s))))
  
  (assert (equal (to-string nil) ""))
  (assert (equal (to-string :foo) "foo"))
  (assert (equal (to-string "hello") "hello"))
  (assert (equal (to-string "Hello, world!") "Hello, world!"))
  
  (defun tag-equal? (a b)
    "This is a comparator for two tags."
    (string= (to-string a) (to-string b)))
  
  (assert (tag-equal? :foo :foo))
  (assert (not (tag-equal? :foo :bar)))
  (assert (tag-equal? :foo "foo"))
  (assert (not (tag-equal? "foo" "Foo")))
  
  (defun multiline-tag? (tag)
    "This tests to see if this tag should be formatted over
  multiple lines in the actual HTML output."
    (member tag '(html head script body form p div ul ol dl table)
            :test #'tag-equal?))
  
  (defun newline-tag? (tag)
    "This tests to see if this tag should be on a line by itself in the actual
  HTML output."
    (or (multiline-tag? tag)
        (member tag '(title h1 h2 h3 h4 h5 h6 br hr li dd dt input tr td)
                :test #'tag-equal?)))
  
  (defun tag-must-close? (tag)
    "This predicate indicates if the tag passed in must have a closing tag
  instead of just self-closing.  That is, you MUST do <tag></tag> even if
  there isn't any body contained in the tag, and you can't just do <tag/>.
  As far as I know only the 'link' and 'script' tags are this stupid."
    (member tag '(link script) :test #'tag-equal?))
  
  (defun html (tag &rest rest)
    (let ((args nil)
          (args-count 0)
          (body nil)
  