Code Aquarium

minazoko's blog -*- 水底のブログ -*-

clojure.inspectorをちょっとだけ見やすく

(require '[clojure.inspector :as insp])
(import 'java.awt.Font)

(defn find-children
  [^java.awt.Component co ^Class cls]
  (some->> co .getComponents
           (filter #(instance? cls %))))

(defn custom-inspect-tree
  [data]
  (let [font (Font. "VL Gothic" Font/PLAIN 20)
        frame (doto (insp/inspect-tree data)
                (.setVisible false))
        jtree (-> frame .getContentPane
                  (find-children javax.swing.JScrollPane) first
                  (find-children javax.swing.JViewport) first
                  (find-children javax.swing.JTree) first)]
    (some-> jtree (.setFont font))
    (doto frame
      (.setSize 1000 800)
      (.setVisible true))))

clojure.inspector は出力が swing の JFrame 固定なのではっきり言って使い勝手が悪いモジュールです。しかもLinuxやWindowsだとフォントが小さいため、目の悪い私にはちょっとした確認で使うにもつらい代物です。
せめてもう少しフォントサイズが大きければなーと思って、こんなの書いて見ました。find-children は jQueryインスパイアだったりします。