(define-module (vcomponent) :use-module (util) :use-module (util app) :use-module (util config) :use-module (srfi srfi-1) :use-module (srfi srfi-41) :use-module (srfi srfi-41 util) :use-module (datetime) :use-module (datetime util) :use-module (vcomponent base) :use-module (vcomponent parse) :use-module ((vcomponent recurrence) :select (generate-recurrence-set repeating?)) :use-module ((vcomponent datetime) :select (ev-timestream (getf 'fixed-events)) (map generate-recurrence-set (getf 'repeating-events))))) (setf 'uid-map (let ((ht (make-hash-table))) (for-each (lambda (event) (hash-set! ht (attr event 'UID) event)) (getf 'events)) ht))) (define-method (fixed-events-in-range start end) (filter-sorted (lambda (ev) ((in-date-range? start end) (as-date (attr ev 'DTSTART)))) (getf 'fixed-events))) (define-method (get-event-by-uid uid) (hash-ref (getf 'uid-map) uid))