#lang racket/base (require racket/date racket/format racket/path racket/string ) (provide date->yyyy-mm-dd now get-cover-file basename basedir not-hidden? ) (define (now) (seconds->date (current-seconds))) (define (date->yyyy-mm-dd d) (format "~a-~a-~a" (date-year d) (~r (date-month d) #:min-width 2 #:pad-string "0") (~r (date-day d) #:min-width 2 #:pad-string "0"))) (define (get-cover-file path) (let-values (((base name dir) (split-path path))) (let ((names '((jpg "cover.jpg") (jpg "cover.jpeg") (jpg "folder.jpg") (jpg "folder.jpeg") (png "cover.png") (png "folder.png")))) (letrec ((f (λ (l) (if (null? l) (values #f #f) (if (file-exists? (build-path base (cadar l))) (values (caar l) (build-path base (cadar l))) (f (cdr l))))))) (f names))))) (define (basename path) (file-name-from-path path)) (define (basedir path) (path-only path)) (define (hidden-path? p) (for/or ([part (in-list (explode-path p))]) (and (path? part) (let ([s (path->string part)]) (and (string-prefix? s ".") (not (member s '("." "..")))))))) (define (not-hidden? path) (not (hidden-path? path)))