(lib-load
"xml-in-laml/mirrors/xhtml10-transitional-mirror.scm")
(define html:title (xhtml10-transitional 'title))
(define (album! album-ast)
(let* ((title-ast (ast-subtree album-ast "title"))
(artist-ast (ast-subtree album-ast "artist"))
(dt-ast (ast-subtree album-ast "recordingdate"))
(notes-ast (ast-subtree album-ast "notes")))
(write-html '(pp prolog)
(html
(head (html:title (ast-text artist-ast)_":"
(ast-text title-ast)))
(body 'bgcolor (rgb-color-encoding white)
(center (h1 (ast-text title-ast)))
(h2 "Notes")
(present-notes notes-ast)
(present-summary album-ast title-ast artist-ast dt-ast)
)))))
(define (present-notes notes-ast)
(p (laml-source-prepare
(transform-ast-list (ast-subtrees notes-ast)
(list (ast-of-type? 'element-name "trackref")
(lambda (tf) (em (ast-text tf))))
(list (ast-of-type? 'element-name "albumref")
mklink)))))
(define (present-summary album-ast title-ast artist-ast dt-ast)
(let* ((catalogno-asts (find-asts album-ast "catalogno"))
(numbers (number-interval 1 (length catalogno-asts))))
(table 'border "1"
(tr (td "Album title") (td (ast-text title-ast)))
(tr (td "Artist") (td (ast-text artist-ast)))
(tr (td "Recording date")
(td (if dt-ast (ast-attribute dt-ast 'date) "-")))
(tr (td 'valign "top" "Catalog numbers")
(td (ul (map catno catalogno-asts numbers)))))))
(define (catno cat-ast n)
(let ((fmt (ast-attribute cat-ast 'format #f)))
(li (as-string n) _ "." (ast-attribute cat-ast 'label)
(ast-attribute cat-ast 'number)
(if fmt (list "("_ fmt _")") '()))))
(define (mklink aref-ast)
(a 'href (ast-attribute aref-ast 'link)
(ast-text aref-ast)))