Function: elisp-demos--export-json-file

elisp-demos--export-json-file is a byte-compiled function defined in elisp-demos.el.

Signature

(elisp-demos--export-json-file JSON-FILE)

Documentation

Export all demos as json to JSON-FILE.

Source Code

;; Defined in ~/.emacs.d/elpa/elisp-demos-20260826.1326/elisp-demos.el
(defun elisp-demos--export-json-file (json-file)
  "Export all demos as json to JSON-FILE."
  (require 'json)
  (let ((output-buffer (generate-new-buffer " *elisp-demos-json*"))
        title body beg end)
    (dolist (file (append elisp-demos-user-files (list elisp-demos--elisp-demos.org)))
      (with-temp-buffer
        (insert-file-contents file)
        (goto-char (point-min))
        (delay-mode-hooks (org-mode))
        (while (re-search-forward "^\\* +\\(.+\\)$" nil t)
          (setq title (org-entry-get (point) "ITEM"))
          (setq beg (save-excursion
                      (forward-line 1)
                      (line-beginning-position)))
          (setq end (save-excursion
                      (if (re-search-forward "^\\* " nil t)
                          (line-beginning-position)
                        (point-max))))
          (setq body (buffer-substring-no-properties beg end))
          (setq title (string-trim title))
          (setq body (string-trim body))
          (with-current-buffer output-buffer
            (insert
             (json-encode-string title) ": " (json-encode-string body) ",\n")))))
    (with-current-buffer output-buffer
      (delete-char -2)
      (goto-char (point-min)) (insert "{\n")
      (goto-char (point-max)) (insert "}\n")
      (write-region (point-min) (point-max) json-file))
    (kill-buffer output-buffer)))