diff options
| author | Andrey Orst <andreyorst@gmail.com> | 2020-11-25 20:52:50 +0300 |
|---|---|---|
| committer | Andrey Orst <andreyorst@gmail.com> | 2020-11-25 20:52:50 +0300 |
| commit | 7b02ecaff4e3e884700e4ec6a0ab4db28966dca1 (patch) | |
| tree | 305bb964cd05cace24d51cf24cb4d1e7b0d5e557 | |
| parent | e3f75563b8edd590e1dfce2271eaa523f19c2bde (diff) | |
feature(core): print empty vectors as [] in the REPL
| -rw-r--r-- | cljlib.fnl | 18 | ||||
| -rw-r--r-- | tests/core.fnl | 4 |
2 files changed, 14 insertions, 8 deletions
@@ -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" |