util:to-/from-keyword with smart upper/lower case

This commit is contained in:
Helmut Merz 2025-09-28 18:51:37 +02:00
parent f472d4ad62
commit baee9008f2
3 changed files with 15 additions and 6 deletions

View file

@ -181,8 +181,8 @@
(setf (shape:data tr) (setf (shape:data tr)
(funcall *build-track-data* (funcall *build-track-data*
;(jzon:parse (getf row :data) :key-fn #'util:to-keyword) ;(jzon:parse (getf row :data) :key-fn #'util:to-keyword)
(jzon:parse (getf row :data) (jzon:parse (getf row :data) :key-fn #'util:to-keyword)
:key-fn (lambda (k) (intern k :keyword))) ;:key-fn (lambda (k) (intern k :keyword)))
)) ))
tr))) tr)))

View file

@ -58,7 +58,7 @@
(== (tracking:trackid tr) 1) (== (tracking:trackid tr) 1)
(setf tr2 (tracking:get-track cont 1)) (setf tr2 (tracking:get-track cont 1))
(== (shape:head tr2) '(:t01 :john)) (== (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) (deftest test-msgstore (ctx)
@ -76,7 +76,7 @@
(setf pm3 (tracking:query-last cont '(:domain :test))) (setf pm3 (tracking:query-last cont '(:domain :test)))
;(util:lgi pm3) ;(util:lgi pm3)
(msgstore:save pm3 cont) (msgstore:save pm3 cont)
(setf (getf (shape:data pm3) :info) "changed") (setf (getf (shape:data pm3) :|Info|) "changed")
(msgstore:save pm3 cont) (msgstore:save pm3 cont)
;(setf r1 (tracking:query cont '(:= :domain "test"))) ;(setf r1 (tracking:query cont '(:= :domain "test")))
(setf r1 (tracking:query cont nil)) (setf r1 (tracking:query cont nil))

View file

@ -106,12 +106,21 @@
(parse-integer (string k))) (parse-integer (string k)))
(defun from-keyword (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) (defun to-keyword (s)
(when (symbolp s)
(setf s (symbol-name s)))
(when (str:downcasep s)
(setf s (str:upcase s)))
(if (string= s "") (if (string= s "")
nil nil
(intern (string-upcase s) :keyword))) (intern s :keyword)))
(defun from-bytes (b) (defun from-bytes (b)
(flexi-streams:octets-to-string b :external-format :utf8)) (flexi-streams:octets-to-string b :external-format :utf8))