Skip to content

Commit

Permalink
Improving the default visualizers system
Browse files Browse the repository at this point in the history
  • Loading branch information
jpmonettas committed Oct 23, 2024
1 parent 200b6f2 commit 7a5bcdd
Show file tree
Hide file tree
Showing 3 changed files with 17 additions and 19 deletions.
2 changes: 1 addition & 1 deletion build.clj
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
[clojure.spec.alpha :as s]))

(def version (or (System/getenv "VERSION")
"4.0.0-alpha"))
"4.0.0-alpha3"))

(def target-dir "target")
(def class-dir (str target-dir "/classes"))
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@
(ui-utils/observable-clear (.getChildren visualizers-combo-box))
(ui-utils/observable-add-all (.getChildren visualizers-combo-box) [viz-combo])))

default-viz (or (visualizers/default-visualizer (:flow-storm.runtime.values/type val-data))
default-viz (or (visualizers/default-visualizer val-data)
(first visualizers))

create-viz (fn [{:keys [on-create]}]
Expand Down
32 changes: 15 additions & 17 deletions src-dbg/flow_storm/debugger/ui/data_windows/visualizers.clj
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
[javafx.scene.text Font]))

(defonce *visualizers (atom {}))
(defonce *types->defaults (atom {}))
(defonce *defaults-visualizers (atom ()))

(defn register-visualizer [{:keys [id] :as viz}]
(swap! *visualizers assoc id viz))
Expand All @@ -30,11 +30,15 @@
viz-ctx (on-create val)]
viz-ctx))

(defn set-default-visualizer [val-type-symb viz-id]
(swap! *types->defaults assoc val-type-symb viz-id))
(defn add-default-visualizer [pred viz-id]
(swap! *defaults-visualizers conj {:pred pred :viz-id viz-id}))

(defn default-visualizer [val-type-symb]
(visualizer (get @*types->defaults val-type-symb)))
(defn default-visualizer [val-data]
(let [viz-id (->> @*defaults-visualizers
(some (fn [{:keys [pred viz-id]}]
(when (pred val-data)
viz-id))))]
(visualizer viz-id)))

(defn data-window-current-val [dw-id]
(dbg-state/data-window-current-val dw-id))
Expand Down Expand Up @@ -264,15 +268,9 @@
;; Default visualizers ;;
;;;;;;;;;;;;;;;;;;;;;;;;;

(set-default-visualizer "clojure.lang.PersistentArrayMap" :map)
(set-default-visualizer "clojure.lang.PersistentHashMap" :map)
(set-default-visualizer "clojure.lang.PersistentVector" :indexed)
(set-default-visualizer "clojure.lang.LazySeq" :seqable)
(set-default-visualizer "clojure.lang.MapEntry" :indexed)

(set-default-visualizer "java.lang.Long" :int)
(set-default-visualizer "java.lang.Integer" :int)
(set-default-visualizer "java.lang.Short" :int)
(set-default-visualizer "java.lang.Byte" :int)

(set-default-visualizer "byte/1" :hex-byte-array)
(add-default-visualizer (fn [val-data] (contains? (:flow-storm.runtime.values/kinds val-data) :paged-shallow-seqable)) :seqable)
(add-default-visualizer (fn [val-data] (contains? (:flow-storm.runtime.values/kinds val-data) :shallow-indexed)) :indexed)
(add-default-visualizer (fn [val-data] (contains? (:flow-storm.runtime.values/kinds val-data) :shallow-map)) :map)
(add-default-visualizer (fn [val-data] (contains? (:flow-storm.runtime.values/kinds val-data) :byte-array)) :hex-byte-array)
(add-default-visualizer (fn [val-data] (contains? (:flow-storm.runtime.values/kinds val-data) :int)) :int)
(add-default-visualizer (fn [val-data] (= "java.lang.String" (:flow-storm.runtime.values/type val-data))) :preview)

0 comments on commit 7a5bcdd

Please sign in to comment.