diff options
author | Hugo Hörnquist <hugo@lysator.liu.se> | 2020-05-01 13:10:19 +0200 |
---|---|---|
committer | Hugo Hörnquist <hugo@lysator.liu.se> | 2020-05-01 13:10:19 +0200 |
commit | b0f51a25df76316c1cd6aa8ea97d3eb213c72cb3 (patch) | |
tree | f3efafe4bb0a80075d4bc2915a6d25586b6a28ea /module/vcomponent | |
parent | Note in README about TippedJS. (diff) | |
parent | Merge branch 'app'. (diff) | |
download | calp-b0f51a25df76316c1cd6aa8ea97d3eb213c72cb3.tar.gz calp-b0f51a25df76316c1cd6aa8ea97d3eb213c72cb3.tar.xz |
Merge branch 'master' into tooltip
Diffstat (limited to 'module/vcomponent')
-rw-r--r-- | module/vcomponent/load.scm | 55 |
1 files changed, 3 insertions, 52 deletions
diff --git a/module/vcomponent/load.scm b/module/vcomponent/load.scm index 37d57b56..09dcd3c8 100644 --- a/module/vcomponent/load.scm +++ b/module/vcomponent/load.scm @@ -1,59 +1,10 @@ (define-module (vcomponent load) :export (load-calendars load-calendars*) :use-module (util) - :use-module (util time) :use-module (util config) - :use-module (srfi srfi-1) - :use-module (datetime) - :use-module (datetime util) - :use-module (srfi srfi-41) - :use-module (srfi srfi-41 util) - ;; :use-module (parameters) - ;; :use-module (vcomponent) - :use-module (vcomponent base) - :use-module ((vcomponent parse) :select (parse-cal-path)) - :use-module ((vcomponent recurrence) :select (generate-recurrence-set repeating?)) - :use-module ((vcomponent datetime) :select (ev-time<?))) + :use-module ((vcomponent parse) :select (parse-cal-path))) (define-config calendar-files '() "" list?) -(define-public (calculate-recurrence-set regular repeating) - (interleave-streams - ev-time<? - (cons (list->stream regular) - (map generate-recurrence-set repeating) - ))) - -;; Reads all calendar files from disk, generate recurence-sets for all repeating events, -;; and returns a list of calendars, and a stream of all events "ready" for display. -(define* (load-calendars #:optional (calendar-files (get-config 'calendar-files))) - (report-time! "Parsing ~a calendars" (length calendar-files)) - (let* ((calendars regular repeating (load-calendars* calendar-files))) - (report-time! "Calendars loaded, interleaving and reccurring") - (values - calendars - (calculate-recurrence-set regular repeating)))) - -;; Basic version, loads calendrs, sorts the events, and returns -;; regular and repeating events separated from each other. -;; -;; (list string) → (list calendar), (list event), (list event) -(define* (load-calendars* #:optional (calendar-files (get-config 'calendar-files))) - - (define calendars (map parse-cal-path calendar-files)) - (define events (concatenate - ;; TODO does this drop events? - (map (lambda (cal) (filter (lambda (o) (eq? 'VEVENT (type o))) - (children cal))) - calendars))) - - (report-time! "Parse done, partitioning...") - (let* ((repeating regular (partition repeating? events))) - - (report-time! "Sorting") - ;; NOTE There might be instances where we don't care if the - ;; collection if sorted, but for the time beieng it's much - ;; easier to always sort it. - (values calendars - (sort*! regular date/-time<? (extract 'DTSTART)) - (sort*! repeating date/-time<? (extract 'DTSTART))))) +(define* (load-calendars calendar-files) + (map parse-cal-path calendar-files)) |