Skip to content

Commit 7515082

Browse files
committed
Let PyString implement java.lang.CharSequence for better Java-integration.
1 parent f8878d2 commit 7515082

2 files changed

Lines changed: 31 additions & 1 deletion

File tree

src/org/python/core/PyBaseString.java

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,11 +6,26 @@
66
* base class for jython strings.
77
*/
88
@ExposedType(name = "basestring", base = PyObject.class, doc = BuiltinDocs.basestring_doc)
9-
public abstract class PyBaseString extends PySequence {
9+
public abstract class PyBaseString extends PySequence implements CharSequence {
1010

1111
public static final PyType TYPE = PyType.fromClass(PyBaseString.class);
1212

1313
protected PyBaseString(PyType type) {
1414
super(type);
1515
}
16+
17+
@Override
18+
public char charAt(int index) {
19+
return toString().charAt(index);
20+
}
21+
22+
@Override
23+
public int length() {
24+
return toString().length();
25+
}
26+
27+
@Override
28+
public CharSequence subSequence(int start, int end) {
29+
return toString().subSequence(start, end);
30+
}
1631
}

src/org/python/core/PyString.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4253,6 +4253,21 @@ protected String unsupportedopMessage(String op, PyObject o2) {
42534253
}
42544254
return super.unsupportedopMessage(op, o2);
42554255
}
4256+
4257+
@Override
4258+
public char charAt(int index) {
4259+
return string.charAt(index);
4260+
}
4261+
4262+
@Override
4263+
public int length() {
4264+
return string.length();
4265+
}
4266+
4267+
@Override
4268+
public CharSequence subSequence(int start, int end) {
4269+
return string.subSequence(start, end);
4270+
}
42564271
}
42574272

42584273

0 commit comments

Comments
 (0)