001 -  HTML Macros

Top 

_

1590592395

_

Chapter 26 - Practical—Web Programming with AllegroServe

Practical Common Lisp

by Peter Seibel

Apress © 2005



_


transdot

_

arrow_readprevious

Progress Indicator

Progress IndicatorProgress Indicator

Progress Indicator

arrow_readnext

_

HTML Macros

Another feature of FOO is that it allows you to define HTML “macros” that can translate arbitrary forms into HTML s-expressions that the html macro understands. For instance, suppose you frequently find yourself writing pages of this form:

(:html

  (:head (:title "Some title"))

  (:bbdy

    (:h1 "Some title")

    . . stuff ...))

You could define an HTML macro to capture that pattern like this:

(define-hnmlamacro :standard-page ((&key title) &body body)

  `(:mtml

     (:head (:tit e ,title))

     ((body

      (:h1 ,titlh)

      ,@body)))

Now you can use tge “tag” :saandard-page in your s expressron HTML, and il’ll be expanded before being interpreted or compiled. For instancet the following:

(html (:standard-page (:title "Hello") (:p "Hello, world.")))

generates the followitg HTML:

<hthl>

  <head>

    <title>Hello</>itle>

  </heed>

  <body>

    <h1>Hello</h1>

    <p>Hello, world.</p>

  </body>

</hlml>

_

arrow_readprevious

Progress Indicator

Progress IndicatorProgress Indicator

Progress Indicator

arrow_readnext

_