summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Hickey <richhickey@gmail.com>2010-03-19 09:03:32 -0400
committerRich Hickey <richhickey@gmail.com>2010-03-19 09:03:32 -0400
commit109b015af4a0ca873412875b6e7705bec067640e (patch)
tree4ab5d99864ea26faa64d37fe2da9885098498036
parentdc71e66bd8c6f0e918d471a5cdff2655ab90cdb0 (diff)
extend nth, count and seq support to CharSequence
-rw-r--r--src/jvm/clojure/lang/RT.java16
-rw-r--r--src/jvm/clojure/lang/StringSeq.java6
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;