From 766400ea75a807a95926a250bd3186eefef45804 Mon Sep 17 00:00:00 2001 From: Martin Kavalar Date: Tue, 13 Dec 2022 16:17:35 +0100 Subject: [PATCH] Fix number viewer for big ints and ratios, fixes #335 --- resources/viewer-js-hash | 2 +- src/nextjournal/clerk/viewer.cljc | 6 +++++- test/nextjournal/clerk/viewer_test.clj | 6 ++++++ 3 files changed, 12 insertions(+), 2 deletions(-) diff --git a/resources/viewer-js-hash b/resources/viewer-js-hash index 06100b11a..f13c3a777 100644 --- a/resources/viewer-js-hash +++ b/resources/viewer-js-hash @@ -1 +1 @@ -3g3hotfUsaHvvKuPkMjwmjSbbLAA \ No newline at end of file +dyr9onTb92755K1KbbSbPikDEDv \ No newline at end of file diff --git a/src/nextjournal/clerk/viewer.cljc b/src/nextjournal/clerk/viewer.cljc index 11affcf3d..c3073a91a 100644 --- a/src/nextjournal/clerk/viewer.cljc +++ b/src/nextjournal/clerk/viewer.cljc @@ -677,7 +677,11 @@ :page-size 80}) (def number-viewer - {:pred number? :render-fn 'nextjournal.clerk.render/render-number}) + {:pred number? + :transform-fn (update-val #(cond-> % + (or (instance? clojure.lang.Ratio %) + (instance? clojure.lang.BigInt %)) pr-str)) + :render-fn 'nextjournal.clerk.render/render-number}) (def number-hex-viewer {:name :number-hex :render-fn '(fn [num] (nextjournal.clerk.render/render-number (str "0x" (.toString (js/Number. num) 16))))}) diff --git a/test/nextjournal/clerk/viewer_test.clj b/test/nextjournal/clerk/viewer_test.clj index 168c8c50a..e68092dec 100644 --- a/test/nextjournal/clerk/viewer_test.clj +++ b/test/nextjournal/clerk/viewer_test.clj @@ -122,6 +122,12 @@ (is (match? {:nextjournal/value nil, :nextjournal/viewer {:name :html}} (v/present (v/html nil))))) + (testing "big ints and ratios are represented as strings (issue #335)" + (is (match? {:nextjournal/value "1142497398145249635243N"} + (v/present 1142497398145249635243N))) + (is (match? {:nextjournal/value "10/33"} + (v/present 10/33)))) + (testing "opts are not propagated to children during presentation" (let [count-opts (fn [o] (let [c (atom 0)]