summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2008-02-11 20:18:05 +0000
committerRich Hickey <richhickey@gmail.com>2008-02-11 20:18:05 +0000
commit2bbd7648774a166cdb856ca4c253db8b0434d1d7 (patch)
treedc125702bb97f967d4e14c1d7742d6e1461f56ba /src
parenta34dd249c4e0b9a5224c4bcf942abdc7e4a34f10 (diff)
added assoc/dissoc/conj support for beans
Diffstat (limited to 'src')
-rw-r--r--src/boot.clj9
1 files changed, 8 insertions, 1 deletions
diff --git a/src/boot.clj b/src/boot.clj
index 53e5e291..8eee9c87 100644
--- a/src/boot.clj
+++ b/src/boot.clj
@@ -1213,13 +1213,20 @@
(seq (.. java.beans.Introspector
(getBeanInfo c)
(getPropertyDescriptors))))
- v (fn [k] ((pmap k)))]
+ v (fn [k] ((pmap k)))
+ snapshot (fn []
+ (reduce (fn [m e]
+ (assoc m (key e) ((val e))))
+ {} (seq pmap)))]
(implement [clojure.lang.IPersistentMap]
(containsKey [k] (contains? pmap k))
(entryAt [k] (when (contains? pmap k) (new clojure.lang.MapEntry k (v k))))
(valAt ([k] (v k))
([k default] (if (contains? pmap k) (v k) default)))
+ (cons [m] (conj (snapshot) m))
(count [] (count pmap))
+ (assoc [k v] (assoc (snapshot) k v))
+ (without [k] (dissoc (snapshot) k))
(seq [] ((fn this [pseq]
(when pseq
(lazy-cons (new clojure.lang.MapEntry (first pseq) (v (first pseq)))