Skip to content

Commit

Permalink
Fix number viewer for big ints and ratios, fixes #335
Browse files Browse the repository at this point in the history
  • Loading branch information
mk committed Dec 13, 2022
1 parent 0bf2437 commit 766400e
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 2 deletions.
2 changes: 1 addition & 1 deletion resources/viewer-js-hash
@@ -1 +1 @@
3g3hotfUsaHvvKuPkMjwmjSbbLAA
dyr9onTb92755K1KbbSbPikDEDv
6 changes: 5 additions & 1 deletion src/nextjournal/clerk/viewer.cljc
Expand Up @@ -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))

This comment has been minimized.

Copy link
@a1exsh

a1exsh Dec 14, 2022

@mk any reason not to default to pr-str? I mean, how do we know that we've covered all possibilities here (what about user-defined types, for example)? :)

This comment has been minimized.

Copy link
@a1exsh

a1exsh Dec 14, 2022

E.g. what about complex numbers?

: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))))})
Expand Down
6 changes: 6 additions & 0 deletions test/nextjournal/clerk/viewer_test.clj
Expand Up @@ -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)]
Expand Down

0 comments on commit 766400e

Please sign in to comment.