branch: externals/code-cells
commit 4e973e01220ad7a3e2d0d50a9c5192a9385e0ede
Author: Augusto Stoffel <[email protected]>
Commit: Augusto Stoffel <[email protected]>

    Do not assume Emacs has native JSON parsing available
    
    Closes #2
---
 code-cells.el | 9 ++++++---
 1 file changed, 6 insertions(+), 3 deletions(-)

diff --git a/code-cells.el b/code-cells.el
index 19dc2faccf..cae22651b4 100644
--- a/code-cells.el
+++ b/code-cells.el
@@ -41,6 +41,7 @@
 ;;; Code:
 
 (require 'map)
+(require 'json)
 (require 'pulse)
 (require 'subr-x)
 (eval-when-compile (require 'rx))
@@ -333,10 +334,12 @@ program name followed by arguments."
 (defun code-cells-convert-ipynb ()
   "Convert buffer from ipynb format to a regular script."
   (goto-char (point-min))
-  (let* ((nb (json-parse-buffer))
+  (let* ((nb (cl-letf ;; Skip over the possibly huge "cells" section
+                 (((symbol-function 'json-read-array) 'forward-sexp))
+               (json-read)))
          (pt (point))
-         (lang (or (map-nested-elt nb '("metadata" "kernelspec" "language"))
-                   (map-nested-elt nb '("metadata" "jupytext" 
"main_language"))))
+         (lang (or (map-nested-elt nb '(metadata kernelspec language))
+                   (map-nested-elt nb '(metadata jupytext main_language))))
          (mode (or (nth 2 code-cells-convert-ipynb-style)
                    (intern (concat lang "-mode"))))
          (exit (code-cells--call-process t (nth 1 
code-cells-convert-ipynb-style))))

Reply via email to