diff options
Diffstat (limited to 'vcalendar.scm')
-rw-r--r-- | vcalendar.scm | 17 |
1 files changed, 16 insertions, 1 deletions
diff --git a/vcalendar.scm b/vcalendar.scm index b61c6140..603aefea 100644 --- a/vcalendar.scm +++ b/vcalendar.scm @@ -36,6 +36,11 @@ (define-public set-attr! %vcomponent-set-attribute!) (define-public get-attr %vcomponent-get-attribute) + +;; Enables symmetric get and set: +;; (set! (attr ev "KEY") 10) +(define-public attr (make-procedure-with-setter get-attr set-attr!)) + (define-public type %vcomponent-type) (define-public parent %vcomponent-parent) (define-public push-child! %vcomponent-push-child!) @@ -43,6 +48,16 @@ (define-public (transform-attr! ev field transformer) "Apply transformer to field in ev, and store the result back." + #; (set-attr! ev field (transformer - (get-attr ev field)))) + (get-attr ev field))) + + ;; TODO make transform C primitive. + ;; Halfing the lookups. + (set! (attr ev field) + (transformer (attr ev field)))) + + + + |