diff options
author | Rich Hickey <richhickey@gmail.com> | 2008-02-12 20:09:27 +0000 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2008-02-12 20:09:27 +0000 |
commit | 91ab7d7ccee1bc8236591b90100f8b0dd3163034 (patch) | |
tree | de0e23aa53ccf8c6722398a99af98ce50b10347c | |
parent | 76c5f7d547b6c424ccd9523a340883e1597551ce (diff) |
added re-seq, re-matches, nth support for matcher
-rw-r--r-- | src/boot.clj | 11 | ||||
-rw-r--r-- | src/jvm/clojure/lang/RT.java | 7 |
2 files changed, 16 insertions, 2 deletions
diff --git a/src/boot.clj b/src/boot.clj index 653d938f..0dfec8ea 100644 --- a/src/boot.clj +++ b/src/boot.clj @@ -1248,3 +1248,14 @@ test [v] (do (f) :ok) :no-test))) +(defn re-seq [#^java.util.regex.Pattern re s] + (let [m (. re (matcher s))] + ((fn step [] + (when (. m (find)) + (lazy-cons (. m (group)) (step))))))) + +(defn re-matches [#^java.util.regex.Pattern re s] + (let [m (. re (matcher s))] + (when (. m (matches)) + m))) + diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java index aeb2b6e7..8d95b2ac 100644 --- a/src/jvm/clojure/lang/RT.java +++ b/src/jvm/clojure/lang/RT.java @@ -17,6 +17,7 @@ import java.util.Collection; import java.util.List; import java.util.Map; import java.util.Arrays; +import java.util.regex.Matcher; import java.io.*; import java.lang.reflect.Array; @@ -491,10 +492,12 @@ static public Object nth(Object coll, int n){ return ((IPersistentVector) coll).nth(n); else if(coll instanceof String) return Character.valueOf(((String) coll).charAt(n)); - else if(coll instanceof List) - return ((List) coll).get(n); else if(coll.getClass().isArray()) return Array.get(coll, n); + else if(coll instanceof List) + return ((List) coll).get(n); + else if(coll instanceof Matcher) + return ((Matcher)coll).group(n+1); else if(coll instanceof Map.Entry) { Map.Entry e = (Map.Entry) coll; |