From db73c44a2640413fce80a9b5fa03fa58dc98d458 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Thu, 30 Dec 2021 16:03:48 +0100 Subject: Move date parsing to library. --- config.scm | 47 ++++++++--------------------------------------- 1 file changed, 8 insertions(+), 39 deletions(-) diff --git a/config.scm b/config.scm index 33a06d1..888f5c8 100644 --- a/config.scm +++ b/config.scm @@ -7,43 +7,12 @@ (feed-handler) - ((datetime) :select (datetime datetime->string))) + ((ice-9 i18n) :select (make-locale)) + ((calp util) :select (->)) + ((datetime) :select (datetime datetime->string + string->datetime))) -(define (parse-month str) - "Get month number from (a shortened) monthname. -Returns -1 on failure" - (let loop ((i 1) - (months - (list "january" "february" "march" "april" "may" "june" "july" - "august" "september" "october" "november" "december"))) - - - (if (null? months) - -1 - (let ((len (min (string-length (car months)) - (string-length str)))) - (if (string=? - (string-take (string-downcase str) len) - (string-take (car months) len)) - i - (loop (1+ i) (cdr months))))))) - - -(define (parse-date str) - (and=> (string-match "([a-zA-Z]*)\\. ([0-9]+), ([0-9]+), ([0-9]+):([0-9]+) ([ap])\\.m\\." str) - (lambda (m) - (let ((month (match:substring m 1)) - (day (string->number (match:substring m 2))) - (year (string->number (match:substring m 3))) - (hour (string->number (match:substring m 4))) - (minute (string->number (match:substring m 5))) - (am-pm (match:substring m 6))) - (datetime #:year year - #:month (parse-month month) - #:day day - #:hour (+ hour (if (string=? am-pm "p") 12 0)) - #:minute minute))))) (define feeds (list @@ -62,10 +31,10 @@ Returns -1 on failure" "https://swordscomic.com/comic/feed/" `((rss:pubDate . ,(lambda (key . children) - (cond ((parse-date (car children)) - => (lambda (dt) - (list key (datetime->string dt "~Y-~m-~dT~H:~M:~S")))) - (else (cons key children))))) + (list key + (-> (car children) + (string->datetime "~b. ~d, ~Y, ~H:~M ~p" (make-locale LC_TIME "en_US.UTF-8")) + (datetime->string "~Y-~m-~dT~H:~M:~S"))))) (rss:description . ,(lambda (key . children) -- cgit v1.2.3