William James
2/8/2015 6:44:00 PM
> ; -- in your utils file --
>
> (defmacro some-keys-value->hashtable (&rest keys-value-list)
> `(let ((hash (make-hash-table :test #'equal)))
> (loop for (ids . name) in ',keys-value-list
> do (dolist (id ids) (setf (gethash id hash) name)) )
> hash ))
>
> (defmacro some-keys-value->hashtable (&rest keys-value-list) `(let ((hash (make-hash-table :test #'equal))) (loop for (ids . name) in ',keys-value-list do (dolist (id ids) (setf (gethash id hash) name)) ) hash ))
>
>
> ; -- in your app file --
>
> (defparameter +frame-name-hash+
> (some-keys-value->hashtable (("COM" "COMM") . "Comment")
> (("TAL" "TALB") . "Album")
> (("TCM" "TCOM") . "Composer")
> (("TCO" "TCON") . "Genre")
> (("TEN" "TENC") . "Encoding program")
> (("TP1" "TPE1") . "Artist")
> (("TPA" "TPOS") . "Part of set")
> (("TRK" "TRCK") . "Track")
> (("TT2" "TIT2") . "Song")
> (("TYE" "TYER" "TDRC") . "Year") ))
Gauche Scheme:
(use srfi-42)
(define (some-keys-value->hashtable keys-value-list)
(define table (make-hash-table 'equal?))
(do-ec
(: x keys-value-list)
(: id (car x))
(hash-table-put! table id (cadr x)))
table)
(define frame-name-hash
(some-keys-value->hashtable '((("COM" "COMM") "Comment")
(("TAL" "TALB") "Album")
(("TCM" "TCOM") "Composer")
(("TCO" "TCON") "Genre")
(("TEN" "TENC") "Encoding program")
(("TP1" "TPE1") "Artist")
(("TPA" "TPOS") "Part of set")
(("TRK" "TRCK") "Track")
(("TT2" "TIT2") "Song")
(("TYE" "TYER" "TDRC") "Year"))))