(define-module (html util) :use-module (util)) ;; Retuns an HTML-safe version of @var{str}. (define-public (html-attr str) (define cs (char-set-adjoin char-set:letter+digit #\- #\_)) (string-filter (lambda (c) (char-set-contains? cs c)) str)) (define-public (date-link date) ((@ (datetime) date->string) date "~Y-~m-~d")) ;; Generate an html id for an event. ;; TODO? same event placed multiple times, when spanning multiple cells (define-public html-id (let ((id (make-object-property))) (lambda (ev) (or (id ev) (set/r! (id ev) (symbol->string (gensym "__html_id_")))))))