sunet/web-server/root/surflets/news.scm

45 lines
1.1 KiB
Scheme

(define-structure surflet surflet-interface
(open scheme-with-scsh
surflets)
(begin
(define *news* '())
(define (read-news news-file-name)
(close-after (open-input-file news-file-name)
(lambda (news-input)
(let loop ((next-line (read-line news-input))
(news '()))
(if (eof-object? next-line)
news
(loop (read-line news-input)
(cons next-line news)))))))
(define (main req)
(if (null? *news*)
(set! *news* (read-news "news.txt")))
(let loop ((news *news*))
(if (null? news)
(show-final-page)
(begin
(show-news-page (car news))
(loop (cdr news))))))
(define (show-final-page)
(send-html/finish
`(html (body (p (h1 "THAT'S IT"))
(p ("That's it..."))
(hr)
(p (url "news.scm" "See news again.") (br)
(url "/" "Return to main menu."))))))
(define (show-news-page news)
(send-html/suspend
(lambda (next-url)
`(html (body (p (h1 ,news))
(a (@ href ,next-url) "read more...")
(hr)
(p (url "news.scm" "See news again from beginning.") (br)
(url "/" "Return to main menu.")))))))
))