diff options
author | Rich Hickey <richhickey@gmail.com> | 2010-03-19 09:03:32 -0400 |
---|---|---|
committer | Rich Hickey <richhickey@gmail.com> | 2010-03-19 09:03:32 -0400 |
commit | 109b015af4a0ca873412875b6e7705bec067640e (patch) | |
tree | 4ab5d99864ea26faa64d37fe2da9885098498036 | |
parent | dc71e66bd8c6f0e918d471a5cdff2655ab90cdb0 (diff) |
extend nth, count and seq support to CharSequence
-rw-r--r-- | src/jvm/clojure/lang/RT.java | 16 | ||||
-rw-r--r-- | src/jvm/clojure/lang/StringSeq.java | 6 |
2 files changed, 11 insertions, 11 deletions
diff --git a/src/jvm/clojure/lang/RT.java b/src/jvm/clojure/lang/RT.java index 40d279f0..22b57cf7 100644 --- a/src/jvm/clojure/lang/RT.java +++ b/src/jvm/clojure/lang/RT.java @@ -467,8 +467,8 @@ static ISeq seqFrom(Object coll){ return IteratorSeq.create(((Iterable) coll).iterator()); else if(coll.getClass().isArray()) return ArraySeq.createFromObject(coll); - else if(coll instanceof String) - return StringSeq.create((String) coll); + else if(coll instanceof CharSequence) + return StringSeq.create((CharSequence) coll); else if(coll instanceof Map) return seq(((Map) coll).entrySet()); else { @@ -508,8 +508,8 @@ public static int count(Object o){ } return i; } - else if(o instanceof String) - return ((String) o).length(); + else if(o instanceof CharSequence) + return ((CharSequence) o).length(); else if(o instanceof Collection) return ((Collection) o).size(); else if(o instanceof Map) @@ -715,8 +715,8 @@ static public Object nth(Object coll, int n){ return ((Indexed) coll).nth(n); if(coll == null) return null; - else if(coll instanceof String) - return Character.valueOf(((String) coll).charAt(n)); + else if(coll instanceof CharSequence) + return Character.valueOf(((CharSequence) coll).charAt(n)); else if(coll.getClass().isArray()) return Reflector.prepRet(Array.get(coll, n)); else if(coll instanceof RandomAccess) @@ -759,8 +759,8 @@ static public Object nth(Object coll, int n, Object notFound){ else if(n < 0) return notFound; - else if(coll instanceof String) { - String s = (String) coll; + else if(coll instanceof CharSequence) { + CharSequence s = (CharSequence) coll; if(n < s.length()) return Character.valueOf(s.charAt(n)); return notFound; diff --git a/src/jvm/clojure/lang/StringSeq.java b/src/jvm/clojure/lang/StringSeq.java index 5cf54644..aa70617b 100644 --- a/src/jvm/clojure/lang/StringSeq.java +++ b/src/jvm/clojure/lang/StringSeq.java @@ -13,16 +13,16 @@ package clojure.lang; public class StringSeq extends ASeq implements IndexedSeq{ -final String s; +final CharSequence s; final int i; -static public StringSeq create(String s){ +static public StringSeq create(CharSequence s){ if(s.length() == 0) return null; return new StringSeq(null, s, 0); } -StringSeq(IPersistentMap meta, String s, int i){ +StringSeq(IPersistentMap meta, CharSequence s, int i){ super(meta); this.s = s; this.i = i; |