From ddbc5777098d58296d52ee2872f8a79e72f48ff8 Mon Sep 17 00:00:00 2001 From: Rich Hickey Date: Wed, 30 Apr 2008 04:02:50 +0000 Subject: re-enabled Map/Map.Entry support --- src/jvm/clojure/lang/APersistentMap.java | 9 ++++++++- src/jvm/clojure/lang/RT.java | 9 ++++++++- 2 files changed, 16 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/jvm/clojure/lang/APersistentMap.java b/src/jvm/clojure/lang/APersistentMap.java index 664d27ca..f62b5aa3 100644 --- a/src/jvm/clojure/lang/APersistentMap.java +++ b/src/jvm/clojure/lang/APersistentMap.java @@ -11,6 +11,7 @@ package clojure.lang; import java.util.Collection; +import java.util.Map; public abstract class APersistentMap extends AFn implements IPersistentMap, Collection{ int _hash = -1; @@ -29,7 +30,13 @@ public String toString(){ } public IPersistentCollection cons(Object o){ - if(o instanceof IPersistentVector) + if(o instanceof Map.Entry) + { + Map.Entry e = (Map.Entry) o; + + return assoc(e.getKey(), e.getValue()); + } + else if(o instanceof IPersistentVector) { IPersistentVector v = (IPersistentVector) o; if(v.count() != 2) diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java index 1b8b4f56..74bc58d5 100644 --- a/src/jvm/clojure/lang/RT.java +++ b/src/jvm/clojure/lang/RT.java @@ -265,7 +265,7 @@ public static void loadResourceScript(String name) throws Exception{ InputStream ins = RT.class.getResourceAsStream("/" + name); if(ins != null) { - Compiler.load(new InputStreamReader(ins), RT.class.getResource("/"+name).toString(), name); + Compiler.load(new InputStreamReader(ins), RT.class.getResource("/" + name).toString(), name); ins.close(); } } @@ -519,6 +519,13 @@ static public Object contains(Object coll, Object key){ static public Object find(Object coll, Object key){ if(coll == null) return null; + else if(coll instanceof Map) + { + Map m = (Map) coll; + if(m.containsKey(key)) + return new MapEntry(key, m.get(key)); + return null; + } return ((Associative) coll).entryAt(key); } -- cgit v1.2.3-70-g09d2