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))))