interactive-prog/album.ss

45 lines
897 B
Scheme

(define (flatten l)
(cond
((not (list? l)) l)
((null? l) '())
((list? (car l)) (append (flatten (car l)) (flatten (cdr l))))
(#t (cons (car l) (flatten (cdr l))))))
(define (tree path)
(cond
((file-directory? path)
(map (lambda (item) (tree (string-append path "/" item))) (directory-list path)))
(#t path)))
(define (string-suffix s n)
(let ([strlen (string-length s)])
(substring s (- strlen n) strlen)))
(define (pictures path)
(sort
string<=?
(filter
(lambda (filename) (string=? ".JPG" (string-suffix filename 4)))
(flatten (tree path)))))
(define (albumize path)
`(html ()
(head ()
(meta (charset "utf-8"))
(style () "
img {
display:block;
max-width: 100%;
margin: auto;
padding: 10px;
}
"))
(body ()
,(map (lambda (filename) `(img (src ,filename))) (pictures path)))))
;(define (sexpr->html