From 2f648b55bbe5c6a5175dce53e610816b9547d498 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Hugo=20H=C3=B6rnquist?= Date: Sun, 23 Aug 2020 00:11:36 +0200 Subject: Micro optimization on string->symbol. --- module/vcomponent/ical/parse.scm | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'module/vcomponent/ical/parse.scm') 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 ) → (list ) +;; (define (tokenize line-obj) (define line (get-string line-obj)) (define colon-idx (string-index line #\:)) -- cgit v1.2.3