summaryrefslogtreecommitdiff
path: root/src/clj
diff options
context:
space:
mode:
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.clj2
-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.clj2
-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