From baee9008f2866598fac8b93408402aa0e3496453 Mon Sep 17 00:00:00 2001 From: Helmut Merz Date: Sun, 28 Sep 2025 18:51:37 +0200 Subject: [PATCH] util:to-/from-keyword with smart upper/lower case --- storage/tracking.lisp | 4 ++-- test/test-storage.lisp | 4 ++-- util/util.lisp | 13 +++++++++++-- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/storage/tracking.lisp b/storage/tracking.lisp index d0af0c7..e2e1a37 100644 --- a/storage/tracking.lisp +++ b/storage/tracking.lisp @@ -181,8 +181,8 @@ (setf (shape:data tr) (funcall *build-track-data* ;(jzon:parse (getf row :data) :key-fn #'util:to-keyword) - (jzon:parse (getf row :data) - :key-fn (lambda (k) (intern k :keyword))) + (jzon:parse (getf row :data) :key-fn #'util:to-keyword) + ;:key-fn (lambda (k) (intern k :keyword))) )) tr))) diff --git a/test/test-storage.lisp b/test/test-storage.lisp index 79c008f..4ae2a5b 100644 --- a/test/test-storage.lisp +++ b/test/test-storage.lisp @@ -58,7 +58,7 @@ (== (tracking:trackid tr) 1) (setf tr2 (tracking:get-track cont 1)) (== (shape:head tr2) '(:t01 :john)) - (== (getf (shape:data tr2) :|desc|) "scopes/storage: queries") + (== (getf (shape:data tr2) :desc) "scopes/storage: queries") )) (deftest test-msgstore (ctx) @@ -76,7 +76,7 @@ (setf pm3 (tracking:query-last cont '(:domain :test))) ;(util:lgi pm3) (msgstore:save pm3 cont) - (setf (getf (shape:data pm3) :info) "changed") + (setf (getf (shape:data pm3) :|Info|) "changed") (msgstore:save pm3 cont) ;(setf r1 (tracking:query cont '(:= :domain "test"))) (setf r1 (tracking:query cont nil)) diff --git a/util/util.lisp b/util/util.lisp index 6f7d181..6ab37a1 100644 --- a/util/util.lisp +++ b/util/util.lisp @@ -106,12 +106,21 @@ (parse-integer (string k))) (defun from-keyword (k) - (if k (string-downcase k) "")) + (when (stringp k) + (return-from from-keyword k)) + (if k + (let ((s (symbol-name k))) + (if (str:upcasep s) (str:downcase s) s)) + "")) (defun to-keyword (s) + (when (symbolp s) + (setf s (symbol-name s))) + (when (str:downcasep s) + (setf s (str:upcase s))) (if (string= s "") nil - (intern (string-upcase s) :keyword))) + (intern s :keyword))) (defun from-bytes (b) (flexi-streams:octets-to-string b :external-format :utf8))