aboutsummaryrefslogtreecommitdiff
path: root/vcalendar.scm
diff options
context:
space:
mode:
authorHugo Hörnquist <hugo@lysator.liu.se>2019-03-04 18:40:24 +0100
committerHugo Hörnquist <hugo@lysator.liu.se>2019-03-04 18:40:24 +0100
commit46cd27874938d7d859dab8ef4a442ccd786b5795 (patch)
tree7ff9165d82cce85ac0cb46c2b53d93b336bfafdb /vcalendar.scm
parentset-attr! can now add new keys. (diff)
downloadcalp-46cd27874938d7d859dab8ef4a442ccd786b5795.tar.gz
calp-46cd27874938d7d859dab8ef4a442ccd786b5795.tar.xz
Add attr as generalized setter for vcomponent attributes.
Diffstat (limited to '')
-rw-r--r--vcalendar.scm17
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))))
+
+
+
+