Skip to content

Commit 3f6e0e7

Browse files
mkphilippamarkovics
authored andcommitted
Assign :name to every viewer in default-viewers
1 parent b4ca884 commit 3f6e0e7

File tree

3 files changed

+34
-19
lines changed

3 files changed

+34
-19
lines changed

CHANGELOG.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ Changes can be:
88

99
## Unreleased
1010

11-
...
11+
* 💫 Assign `:name` to every viewer in `default-viewers`
1212

1313
## 0.14.919 (2023-06-13)
1414

src/nextjournal/clerk/viewer.cljc

Lines changed: 26 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -393,7 +393,8 @@
393393
(var? (get-safe x :nextjournal.clerk/var-from-def)))
394394

395395
(def var-from-def-viewer
396-
{:pred var-from-def?
396+
{:name `var-from-def-viewer
397+
:pred var-from-def?
397398
:transform-fn (update-val (comp deref :nextjournal.clerk/var-from-def))})
398399

399400
(defn apply-viewer-unwrapping-var-from-def
@@ -772,17 +773,19 @@
772773
:transform-fn (fn [wrapped-value] (with-viewer `html-viewer [:sup.sidenote-ref (-> wrapped-value ->value :ref inc)]))}])
773774

774775
(def char-viewer
775-
{:pred char? :render-fn '(fn [c] [:span.cmt-string.inspected-value "\\" c])})
776+
{:name `char-viewer :pred char? :render-fn '(fn [c] [:span.cmt-string.inspected-value "\\" c])})
776777

777778
(def string-viewer
778-
{:pred string?
779+
{:name `string-viewer
780+
:pred string?
779781
:render-fn 'nextjournal.clerk.render/render-quoted-string
780782
:opening-paren "\""
781783
:closing-paren "\""
782784
:page-size 80})
783785

784786
(def number-viewer
785-
{:pred number?
787+
{:name `number-viewer
788+
:pred number?
786789
:render-fn 'nextjournal.clerk.render/render-number
787790
#?@(:clj [:transform-fn (update-val #(cond-> %
788791
(or (instance? clojure.lang.Ratio %)
@@ -792,41 +795,42 @@
792795
{:name `number-hex-viewer :render-fn '(fn [num] (nextjournal.clerk.render/render-number (str "0x" (.toString (js/Number. num) 16))))})
793796

794797
(def symbol-viewer
795-
{:pred symbol? :render-fn '(fn [x] [:span.cmt-keyword.inspected-value (str x)])})
798+
{:name `symbol-viewer :pred symbol? :render-fn '(fn [x] [:span.cmt-keyword.inspected-value (str x)])})
796799

797800
(def keyword-viewer
798-
{:pred keyword? :render-fn '(fn [x] [:span.cmt-atom.inspected-value (str x)])})
801+
{:name `keyword-viewer :pred keyword? :render-fn '(fn [x] [:span.cmt-atom.inspected-value (str x)])})
799802

800803
(def nil-viewer
801-
{:pred nil? :render-fn '(fn [_] [:span.cmt-default.inspected-value "nil"])})
804+
{:name `nil-viewer :pred nil? :render-fn '(fn [_] [:span.cmt-default.inspected-value "nil"])})
802805

803806
(def boolean-viewer
804-
{:pred boolean? :render-fn '(fn [x] [:span.cmt-bool.inspected-value (str x)])})
807+
{:name `boolean-viewer :pred boolean? :render-fn '(fn [x] [:span.cmt-bool.inspected-value (str x)])})
805808

806809
(def map-entry-viewer
807-
{:pred map-entry? :name `map-entry-viewer :render-fn '(fn [xs opts] (into [:<>] (comp (nextjournal.clerk.render/inspect-children opts) (interpose " ")) xs)) :page-size 2})
810+
{:name `map-entry-viewer :pred map-entry? :render-fn '(fn [xs opts] (into [:<>] (comp (nextjournal.clerk.render/inspect-children opts) (interpose " ")) xs)) :page-size 2})
808811

809812
(def read+inspect-viewer
810813
{:name `read+inspect-viewer :render-fn '(fn [x] (try [nextjournal.clerk.render/inspect (nextjournal.clerk.viewer/read-string-without-tag-table x)]
811814
(catch js/Error _e
812815
(nextjournal.clerk.render/render-unreadable-edn x))))})
813816

814817
(def vector-viewer
815-
{:pred vector? :render-fn 'nextjournal.clerk.render/render-coll :opening-paren "[" :closing-paren "]" :page-size 20})
818+
{:name `vector-viewer :pred vector? :render-fn 'nextjournal.clerk.render/render-coll :opening-paren "[" :closing-paren "]" :page-size 20})
816819

817820
(def set-viewer
818-
{:pred set? :render-fn 'nextjournal.clerk.render/render-coll :opening-paren "#{" :closing-paren "}" :page-size 20})
821+
{:name `set-viewer :pred set? :render-fn 'nextjournal.clerk.render/render-coll :opening-paren "#{" :closing-paren "}" :page-size 20})
819822

820823
(def sequential-viewer
821-
{:pred sequential? :render-fn 'nextjournal.clerk.render/render-coll :opening-paren "(" :closing-paren ")" :page-size 20})
824+
{:name `sequential-viewer :pred sequential? :render-fn 'nextjournal.clerk.render/render-coll :opening-paren "(" :closing-paren ")" :page-size 20})
822825

823826
(def map-viewer
824-
{:pred map? :name `map-viewer :render-fn 'nextjournal.clerk.render/render-map :opening-paren "{" :closing-paren "}" :page-size 10})
827+
{:name `map-viewer :pred map? :render-fn 'nextjournal.clerk.render/render-map :opening-paren "{" :closing-paren "}" :page-size 10})
825828

826829
#?(:cljs (defn var->symbol [v] (if (instance? sci.lang.Var v) (sci.impl.vars/toSymbol v) (symbol v))))
827830

828831
(def var-viewer
829-
{:pred (some-fn var? #?(:cljs #(instance? sci.lang.Var %)))
832+
{:name `var-viewer
833+
:pred (some-fn var? #?(:cljs #(instance? sci.lang.Var %)))
830834
:transform-fn (comp #?(:cljs var->symbol :clj symbol) ->value)
831835
:render-fn '(fn [x] [:span.inspected-value [:span.cmt-meta "#'" (str x)]])})
832836

@@ -846,12 +850,14 @@
846850
:nextjournal/content-type "image/png"
847851
:nextjournal/width (image-width image)}
848852
mark-presented))])
853+
:name `image-viewer
849854
:render-fn '(fn [blob-or-url] [:div.flex.flex-col.items-center.not-prose
850855
[:img {:src #?(:clj (nextjournal.clerk.render/url-for blob-or-url)
851856
:cljs blob-or-url)}]])})
852857

853858
(def ideref-viewer
854-
{:pred #(#?(:clj instance? :cljs satisfies?) IDeref %)
859+
{:name `ideref-viewer
860+
:pred #(#?(:clj instance? :cljs satisfies?) IDeref %)
855861
:transform-fn (update-val (fn [ideref]
856862
(with-viewer `tagged-value-viewer
857863
{:tag "object"
@@ -862,12 +868,13 @@
862868
(deref ideref)))})))})
863869

864870
(def regex-viewer
865-
{:pred #?(:clj (partial instance? java.util.regex.Pattern) :cljs regexp?)
871+
{:name `regex-viewer
872+
:pred #?(:clj (partial instance? java.util.regex.Pattern) :cljs regexp?)
866873
:transform-fn (fn [wrapped-value] (with-viewer `tagged-value-viewer {:tag "" :value (let [regex (->value wrapped-value)]
867874
#?(:clj (.pattern regex) :cljs (.-source regex)))}))})
868875

869876
(def fallback-viewer
870-
{:pred (constantly :true) :transform-fn (update-val #(with-viewer `read+inspect-viewer (pr-str %)))})
877+
{:name `fallback-viewer :pred (constantly :true) :transform-fn (update-val #(with-viewer `read+inspect-viewer (pr-str %)))})
871878

872879
(def elision-viewer
873880
{:name `elision-viewer :render-fn 'nextjournal.clerk.render/render-elision :transform-fn mark-presented})
@@ -1156,7 +1163,8 @@
11561163
mark-presented))})
11571164

11581165
(def viewer-eval-viewer
1159-
{:pred viewer-eval?
1166+
{:name `viewer-eval-viewer
1167+
:pred viewer-eval?
11601168
:var-from-def? true
11611169
:transform-fn (comp mark-presented
11621170
(update-val

test/nextjournal/clerk/viewer_test.clj

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,13 @@
8383
(let [value (v/html [:div [:ul [:li {:nextjournal/value (range 30)}]]])]
8484
(is (= (v/->value value) (v/->value (v/desc->values (resolve-elision (v/present value)))))))))
8585

86+
(deftest default-viewers
87+
(testing "viewers have names matching vars"
88+
(doseq [[viewer-name viewer] (into {}
89+
(map (juxt :name (comp deref resolve :name)))
90+
v/default-viewers)]
91+
(is (= viewer-name (:name viewer))))))
92+
8693
(deftest apply-viewers
8794
(testing "selects number viewer"
8895
(is (match? {:nextjournal/value 42

0 commit comments

Comments
 (0)