aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--module/vcomponent/ical/parse.scm10
1 files changed, 9 insertions, 1 deletions
diff --git a/module/vcomponent/ical/parse.scm b/module/vcomponent/ical/parse.scm
index 2c01927b..96c18952 100644
--- a/module/vcomponent/ical/parse.scm
+++ b/module/vcomponent/ical/parse.scm
@@ -11,6 +11,14 @@
:use-module (vcomponent geo)
)
+(define string->symbol
+ (let ((ht (make-hash-table 1000)))
+ (lambda (str)
+ (or (hash-ref ht str)
+ (let ((symb ((@ (guile) string->symbol) str)))
+ (hash-set! ht str symb)
+ symb)))))
+
;; TODO rename to parse-vcomponent, or parse-ical (?).
(define-public (parse-calendar port)
(parse (map tokenize (read-file port))))
@@ -54,7 +62,7 @@
(data get-data) ; (key kv ... value)
)
-;; (list <line>) → (list <tokens>)
+;; <line> → <tokens>
(define (tokenize line-obj)
(define line (get-string line-obj))
(define colon-idx (string-index line #\:))