Printing an alist of plists with cons format
Heime <[email protected]>
| Newsgroups | gmane.emacs.help |
|---|---|
| Message-ID | <-jrNYLApecnlXBd9WNg2nJBZVDx4tNkc_2TTXEgOFPjS6zNsVwZvRsaAKW9BE1w-X_84yV7bp46RUSxFZbHHlsxQ2u-gs_NzwZvmw18gq-U=@protonmail.com> |
Have made a two level plist
(defvar mpl-length
'(:cm (:10pt 283.46456 :pt 28.34646 :mm 10 :in 0.39370 :ft 0.03281)
:in (:10pt 720 :pt 72 :mm 25.4 :cm 2.54 :ft 0.083333)
:ft (:10pt 8640 :pt 864 :mm 304.8 :cm 30.48 :in 12)))
And wanted to convert it to a different form: making the top-level plist
into an alist.
(defun mpl-plist-to-alist (plist)
"Convert a nested two-level plist (:u1 plist1 :u2 plist2 ...)
to a plist nested in an alist '((u1 . plist1) (u2 . plist2) ...)."
(let (alist)
(while plist
(let ((unit (pop plist))
(plist (pop plist)))
(push (cons unit plist) alist)))
(nreverse alist)))
This gives
((:cm :10pt 283.46456 :pt 28.34646 :mm 10 :in 0.3937 :ft 0.03281)
(:in :10pt 720 :pt 72 :mm 25.4 :cm 2.54 :ft 0.083333)
(:ft :10pt 8640 :pt 864 :mm 304.8 :cm 30.48 :in 12))
How can I get the new list being printed as
((:cm . (:10pt 283.46456 :pt 28.34646 :mm 10 :in 0.3937 :ft 0.03281))
(:in . (:10pt 720 :pt 72 :mm 25.4 :cm 2.54 :ft 0.083333))
(:ft . (:10pt 8640 :pt 864 :mm 304.8 :cm 30.48 :in 12)))