diff options
Diffstat (limited to 'src/clj')
-rw-r--r-- | src/clj/clojure/core.clj (renamed from src/clj/clojure/boot.clj) | 22 | ||||
-rw-r--r-- | src/clj/clojure/genclass.clj | 2 | ||||
-rw-r--r-- | src/clj/clojure/inspector.clj (renamed from src/clj/clojure/inspector/inspector.clj) | 83 | ||||
-rw-r--r-- | src/clj/clojure/parallel.clj (renamed from src/clj/clojure/parallel/parallel.clj) | 0 | ||||
-rw-r--r-- | src/clj/clojure/proxy.clj | 2 | ||||
-rw-r--r-- | src/clj/clojure/set.clj (renamed from src/clj/clojure/set/set.clj) | 0 | ||||
-rw-r--r-- | src/clj/clojure/xml.clj (renamed from src/clj/clojure/xml/xml.clj) | 0 | ||||
-rw-r--r-- | src/clj/clojure/zip.clj (renamed from src/clj/clojure/zip/zip.clj) | 0 |
8 files changed, 91 insertions, 18 deletions
diff --git a/src/clj/clojure/boot.clj b/src/clj/clojure/core.clj index 8eb8db0f..1d81d4f1 100644 --- a/src/clj/clojure/boot.clj +++ b/src/clj/clojure/core.clj @@ -6,7 +6,7 @@ ; the terms of this license. ; You must not remove this notice, or any other, from this software. -(in-ns 'clojure) +(in-ns 'clojure.core) (def #^{:arglists '([& items]) @@ -3097,18 +3097,18 @@ [name & references] (let [process-reference (fn [[kname & args]] - `(~(symbol "clojure" (clojure/name kname)) + `(~(symbol "clojure.core" (clojure.core/name kname)) ~@(map #(list 'quote %) args)))] `(do - (clojure/in-ns '~name) + (clojure.core/in-ns '~name) ~@(when (not-any? #(= :refer-clojure (first %)) references) - `((clojure/refer '~'clojure))) + `((clojure.core/refer '~'clojure.core))) ~@(map process-reference references)))) (defmacro refer-clojure "Same as (refer 'clojure <filters>)" [& filters] - `(clojure/refer '~'clojure ~@filters)) + `(clojure.core/refer '~'clojure.core ~@filters)) (defmacro defonce "defs name to have the root value of the expr iff the named var has no root value, @@ -3227,14 +3227,14 @@ (throw-if (and need-ns (not (find-ns lib))) "namespace '%s' not found" lib)) (when (and need-ns *loading-verbosely*) - (printf "(clojure/in-ns '%s)\n" (ns-name *ns*))) + (printf "(clojure.core/in-ns '%s)\n" (ns-name *ns*))) (when as (when *loading-verbosely* - (printf "(clojure/alias '%s '%s)\n" as lib)) + (printf "(clojure.core/alias '%s '%s)\n" as lib)) (alias as lib)) (when use (when *loading-verbosely* - (printf "(clojure/refer '%s" lib) + (printf "(clojure.core/refer '%s" lib) (doseq [opt filter-opts] (printf " %s '%s" (key opt) (print-str (val opt)))) (printf ")\n")) @@ -3312,12 +3312,12 @@ (defn use "Like 'require, but also refers to each lib's namespace using - clojure/refer. Use :use in the ns macro in preference to calling + clojure.core/refer. Use :use in the ns macro in preference to calling this directly. 'use accepts additional options in libspecs: :exclude, :only, :rename. The arguments and semantics for :exclude, :only, and :rename are the same - as those documented for clojure/refer." + as those documented for clojure.core/refer." [& args] (apply load-libs :require :use args)) (defn loaded-libs @@ -3334,7 +3334,7 @@ path (str (root-directory (ns-name *ns*)) \/ path))] (when *loading-verbosely* - (printf "(clojure/load \"%s\")\n" path) + (printf "(clojure.core/load \"%s\")\n" path) (flush)) (throw-if (*pending-paths* path) "cannot load '%s' again while it is loading" diff --git a/src/clj/clojure/genclass.clj b/src/clj/clojure/genclass.clj index 49e9ad4e..39370d9d 100644 --- a/src/clj/clojure/genclass.clj +++ b/src/clj/clojure/genclass.clj @@ -6,7 +6,7 @@ ; the terms of this license. ; You must not remove this notice, or any other, from this software. -(in-ns 'clojure) +(in-ns 'clojure.core) (import '(java.lang.reflect Modifier Constructor) '(clojure.asm ClassWriter ClassVisitor Opcodes Type) diff --git a/src/clj/clojure/inspector/inspector.clj b/src/clj/clojure/inspector.clj index 8a88465b..f60f6561 100644 --- a/src/clj/clojure/inspector/inspector.clj +++ b/src/clj/clojure/inspector.clj @@ -7,9 +7,12 @@ ; You must not remove this notice, or any other, from this software. (ns clojure.inspector - (:import (javax.swing.tree TreeModel) - (javax.swing.table TableModel) - (javax.swing JTree JTable JScrollPane JFrame))) + (:import + (java.awt BorderLayout) + (java.awt.event ActionEvent ActionListener) + (javax.swing.tree TreeModel) + (javax.swing.table TableModel AbstractTableModel) + (javax.swing JPanel JTree JTable JScrollPane JFrame JToolBar JButton SwingUtilities))) (defn atom? [x] (not (instance? clojure.lang.IPersistentCollection x))) @@ -61,7 +64,7 @@ (removeTreeModelListener [treeModelListener]))) -(defn table-model [data] +(defn old-table-model [data] (let [row1 (first data) colcnt (count row1) cnt (count data) @@ -94,10 +97,80 @@ of equal length" [data] (doto (new JFrame "Clojure Inspector") - (add (new JScrollPane (new JTable (table-model data)))) + (add (new JScrollPane (new JTable (old-table-model data)))) (setSize 400 600) (setVisible true))) + +(defmulti list-provider class) + +(defmethod list-provider :default [x] + {:nrows 1 :get-value (fn [i] x) :get-label (fn [i] (.getName (class x)))}) + +(defmethod list-provider java.util.List [c] + (let [v (if (vector? c) c (vec c))] + {:nrows (count v) + :get-value (fn [i] (v i)) + :get-label (fn [i] i)})) + +(defmethod list-provider java.util.Map [c] + (let [v (vec (sort (map (fn [[k v]] (vector k v)) c)))] + {:nrows (count v) + :get-value (fn [i] ((v i) 1)) + :get-label (fn [i] ((v i) 0))})) + +(defn list-model [provider] + (let [{:keys [nrows get-value get-label]} provider] + (proxy [AbstractTableModel] [] + (getColumnCount [] 2) + (getRowCount [] nrows) + (getValueAt [rowIndex columnIndex] + (cond + (= 0 columnIndex) (get-label rowIndex) + (= 1 columnIndex) (print-str (get-value rowIndex))))))) + +(defmulti table-model class) + +(defmethod table-model :default [x] + (proxy [AbstractTableModel] [] + (getColumnCount [] 2) + (getRowCount [] 1) + (getValueAt [rowIndex columnIndex] + (if (zero? columnIndex) + (class x) + x)))) + +(defn make-inspector [x] + (agent {:frame frame :data x :parent nil :index 0})) + + +(defn inspect + "creates a graphical (Swing) inspector on the supplied object" + [x] + (doto (JFrame. "Clojure Inspector") + (add + (doto (JPanel. (BorderLayout.)) + (add (doto (JToolBar.) + (add (JButton. "Back")) + (addSeparator) + (add (JButton. "List")) + (add (JButton. "Table")) + (add (JButton. "Bean")) + (add (JButton. "Line")) + (add (JButton. "Bar")) + (addSeparator) + (add (JButton. "Prev")) + (add (JButton. "Next"))) + BorderLayout/NORTH) + (add + (JScrollPane. + (doto (JTable. (list-model (list-provider x))) + (setAutoResizeMode JTable/AUTO_RESIZE_LAST_COLUMN))) + BorderLayout/CENTER))) + (setSize 400 400) + (setVisible true))) + + (comment (load-file "src/inspector.clj") diff --git a/src/clj/clojure/parallel/parallel.clj b/src/clj/clojure/parallel.clj index ae177b2f..ae177b2f 100644 --- a/src/clj/clojure/parallel/parallel.clj +++ b/src/clj/clojure/parallel.clj diff --git a/src/clj/clojure/proxy.clj b/src/clj/clojure/proxy.clj index 2bf37b8e..b1491adb 100644 --- a/src/clj/clojure/proxy.clj +++ b/src/clj/clojure/proxy.clj @@ -6,7 +6,7 @@ ; the terms of this license. ; You must not remove this notice, or any other, from this software. -(in-ns 'clojure) +(in-ns 'clojure.core) (import '(clojure.asm ClassWriter ClassVisitor Opcodes Type) diff --git a/src/clj/clojure/set/set.clj b/src/clj/clojure/set.clj index a59fc145..a59fc145 100644 --- a/src/clj/clojure/set/set.clj +++ b/src/clj/clojure/set.clj diff --git a/src/clj/clojure/xml/xml.clj b/src/clj/clojure/xml.clj index 117016af..117016af 100644 --- a/src/clj/clojure/xml/xml.clj +++ b/src/clj/clojure/xml.clj diff --git a/src/clj/clojure/zip/zip.clj b/src/clj/clojure/zip.clj index 1115b729..1115b729 100644 --- a/src/clj/clojure/zip/zip.clj +++ b/src/clj/clojure/zip.clj |