Function: keyfreq-json-encode
keyfreq-json-encode is a natively compiled function defined in
keyfreq.el.
Signature
(keyfreq-json-encode TABLE)
Documentation
Return a JSON representation of the table of frequencies.
Source Code
;; Defined in /nix/store/vs0cnjcny583s3d1i80ya8g63h6xkwrn-emacs-packages-deps/share/emacs/site-lisp/elpa/keyfreq-20231107.106/keyfreq.el
(defun keyfreq-json-encode (table)
"Return a JSON representation of the table of frequencies."
(require 'json)
(let ((commands-indexes (make-hash-table :test 'equal :size 128))
commands-list frequencies-matrix i)
;; Build the "commands" property of the JSON object.
(setq i 0)
(maphash
(lambda (command-symbol counter)
(add-to-list 'commands-list command-symbol t)
(puthash command-symbol i commands-indexes)
(setq i (+ i 1))
)
(keyfreq-groups-major-modes table))
;; Build the "frequencies" property.
(mapc
(lambda (major-mode-symbol)
(let ((cmd-count-pairs '()))
(keyfreq-format-list (keyfreq-list (keyfreq-filter-major-mode table major-mode-symbol))
(lambda (count perc command)
(add-to-list 'cmd-count-pairs (gethash command commands-indexes) t)
(add-to-list 'cmd-count-pairs count t)))
(add-to-list 'frequencies-matrix major-mode-symbol t)
(add-to-list 'frequencies-matrix (append cmd-count-pairs nil) t)))
(keyfreq-used-major-modes table))
(json-encode `((:format . 1)
(:commands . ,commands-list)
(:frequencies . ,frequencies-matrix)))))