branch: elpa/parseedn commit a09686fbb9113b8b1b4f20c9e1dc0d6fea01a64f Merge: 8dca313b95 7b888171de Author: Arne Brasseur <a...@arnebrasseur.net> Commit: GitHub <nore...@github.com>
Merge pull request #14 from tmpUser2022/iterative-parseedn-print-seq Iterative parseedn-print-seq to avoid overflows --- parseedn.el | 10 +++++----- test/parseedn-test.el | 2 ++ 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/parseedn.el b/parseedn.el index 6e93399f91..eb36782792 100644 --- a/parseedn.el +++ b/parseedn.el @@ -156,12 +156,12 @@ TAG-READERS is an optional association list. For more information, see (defun parseedn-print-seq (coll) "Insert sequence COLL as EDN into the current buffer." - (unless (seq-empty-p coll) - (parseedn-print (elt coll 0))) - (let ((next (seq-drop coll 1))) - (when (not (seq-empty-p next)) + (when (not (seq-empty-p coll)) + (while (not (seq-empty-p coll)) + (parseedn-print (elt coll 0)) (insert " ") - (parseedn-print-seq next)))) + (setq coll (seq-drop coll 1))) + (delete-char -1))) (defun parseedn-print-hash-or-alist (map &optional ks) "Insert hash table MAP or elisp alist as an EDN map into the current buffer." diff --git a/test/parseedn-test.el b/test/parseedn-test.el index 8d167d54a8..e3c7d88f2f 100644 --- a/test/parseedn-test.el +++ b/test/parseedn-test.el @@ -37,6 +37,8 @@ (should (equal (parseedn-print-str nil) "nil")) (should (equal (parseedn-print-str 100) "100")) (should (equal (parseedn-print-str 1.2) "1.2")) + (should (equal (parseedn-print-str []) "[]")) + (should (equal (parseedn-print-str '(edn-set ())) "#{}")) (should (equal (parseedn-print-str [1 2 3]) "[1 2 3]")) (should (equal (parseedn-print-str t) "true")) (should (equal (parseedn-print-str '((a . 1) (b . 2))) "{a 1, b 2}"))