From 7b02ecaff4e3e884700e4ec6a0ab4db28966dca1 Mon Sep 17 00:00:00 2001 From: Andrey Orst Date: Wed, 25 Nov 2020 20:52:50 +0300 Subject: feature(core): print empty vectors as [] in the REPL --- cljlib.fnl | 18 +++++++++++------- tests/core.fnl | 4 +++- 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/cljlib.fnl b/cljlib.fnl index e7b5f31..814b3af 100644 --- a/cljlib.fnl +++ b/cljlib.fnl @@ -376,7 +376,14 @@ Sets additional metadata for function [`vector?`](#vector?) to work. (assert (eq v [1 2 3 4])) ```" [& args] - (setmetatable args {:cljlib/type :seq})) + (setmetatable args {:cljlib/type :seq + :__fennelview (fn [t] + (let [res [] + view (require :fennelview)] + (each [_ v (ipairs t)] + (insert res (view v))) + (.. "[" (table.concat res " ") "]"))) + :__name "vector"})) (fn* core.seq "Create sequential table. @@ -1098,12 +1105,9 @@ that would apply to that value, or `nil` if none apply and no default." "Returns stateless `ipairs` iterator for ordered sets." (fn [] (fn set-next [t i] - (fn loop [t k] - (local (k v) (next t k)) - (if v (if (= v (+ 1 i)) - (values v k) - (loop t k)))) - (loop t)) + (each [k v (pairs t)] + (if (= v (+ 1 i)) + (lua "return v, k")))) (values set-next Set 0))) (fn hash-set-ipairs [Set] diff --git a/tests/core.fnl b/tests/core.fnl index d323a07..4c7fdeb 100644 --- a/tests/core.fnl +++ b/tests/core.fnl @@ -716,7 +716,9 @@ (assert-eq (vector) []) (assert-eq (vector 1) [1]) (assert-eq (vector 1 2 3) [1 2 3]) - (assert-eq (getmetatable (vector 1 2 3)) {:cljlib/type :seq}))) + (let [m (getmetatable (vector 1 2 3))] + (assert-eq (. m :__name) "vector") + (assert-eq (. m :cljlib/type) :seq)))) (deftest hash-map (testing "hash-map" -- cgit v1.2.3