(in-package #:lml2)
-(page ("readme")
+(html-file-page ("readme")
(html
(:head
(:title "LML2 README")
"The home page for LML2 is "
((:a :href "http://lml2.b9.com/") "http://lml2.b9.com/")
".")
+
+ (:h2 "Prerequisites")
+ (:ul
+ (:li ((:a :href "http://cliki.net/asdf") "ASDF"))
+ (:li ((:a :href "http://cliki.net/kmrcl") "KMRCL")))
- (:h2 "Differences between LML and LML2")
+ (:h2 "Differences between LML2 and LML")
(:p "The syntax and HTML generation for LML2 are based on Franz's htmlgen macro. Personally, I like the syntax of LML better than LML2, but there are advantages of Franz's approach:")
(:ul
(:li "Faster compilation and runtime HTML generation")
(:li "Behavior of tags is extensible"))
- (:h2 "Differences between htmlgen and LML2")
+ (:h2 "Differences between LML2 and htmlgen")
(:ul
(:li "LML2 is XHTML compatible with close tags so that (html :hr) now produces '<hr />'")
(:li "Lowercase tag names so that (html ((:p class 'a))) now produces '<p class=\"a\"></p>")
(:li "Addition of new tags such as :insert-file, :nbsp, :jscript")
- (:li "Removal of the if* macro from the htmlgen.lisp source code"))
+ (:li "Removal of the if* macro from the htmlgen.lisp source code")
+ (:li "Incorporation of LML's standard site macro and other helper functions.")
+ (:li "Addition of special attribute tags (:if :when :optional :format :format")
+ (:li "Automatic quoting of attribute values for non-string values")
+ (:li "Post macroexpansion code walker to collape sequential write-string calls"))
(:h2 "Installation")
(:p
(:td
(:pre
"(html
- (:i \"The square of the first five integers are: )\"
- (:b
- (loop as x from 1 to 5
- doing
- (lml-format \" ~D\" (* x x))))"))
+ (:i \"The square of the first five integers are: \")
+ (:b (loop as x from 1 to 5
+ doing (html " " (:princ (* x x))))))"))
(:td
(:i "The square of the first five integers are: ")
- (:b
- (loop as x from 1 to 5
- doing
- (lml-format " ~D" (* x x))))))
+ (:b (loop as x from 1 to 5
+ doing (html " " (:princ (* x x)))))))
))
:hr
(:p