diff options
author | Rich Hickey <richhickey@gmail.com> | 2008-02-11 20:18:05 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2008-02-11 20:18:05 +0000 |
commit | 2bbd7648774a166cdb856ca4c253db8b0434d1d7 (patch) | |
tree | dc125702bb97f967d4e14c1d7742d6e1461f56ba /src | |
parent | a34dd249c4e0b9a5224c4bcf942abdc7e4a34f10 (diff) |
added assoc/dissoc/conj support for beans
Diffstat (limited to 'src')
-rw-r--r-- | src/boot.clj | 9 |
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))) |