(module html-utils
(tabularize
itemize
enumerate
html-page
combo-box
hidden-input
text-input
submit-input)
(import chicken scheme files data-structures posix utils)
(use html-tags srfi-13)
(define (tabularize data #!key table-id table-class quote-procedure even-row-class odd-row-class header)
(let ((even-row #f))
(
id: table-id class: table-class quote-procedure: quote-procedure
(string-append
(if header
( (string-intersperse (map header) ""))
"")
(string-intersperse
(map (lambda (line)
( |
class: (and even-row-class odd-row-class
(begin
(set! even-row (not even-row))
(if even-row
even-row-class
odd-row-class)))
(string-intersperse (map line) "")))
data)
"")))))
(define (html-list listing self items #!key list-id list-class quote-procedure)
(listing id: list-id class: list-class quote-procedure: quote-procedure
(string-intersperse
(map (lambda (item)
(if (list? item)
(self item quote-procedure: quote-procedure)
( item)))
items)
"")))
(define (itemize items #!key list-id list-class quote-procedure)
(html-list
itemize
items
list-id: list-id
list-class: list-class
quote-procedure: quote-procedure))
(define (enumerate items #!key list-id list-class quote-procedure)
(html-list
enumerate
items
list-id: list-id
list-class: list-class
quote-procedure: quote-procedure))
(define (html-page contents #!key css title (doctype "") (headers "") charset)
(string-append
doctype
(
(
(if title ( title) "")
(if charset
( http-equiv: "Content-Type"
content: (string-append "text/html; charset=" charset))
"")
(cond ((string? css)
( rel: "stylesheet" href: css type: "text/css"))
((list? css)
(let ((inline ""))
(string-intersperse
(map (lambda (f)
(if (list? f)
( |