[Jython-checkins] jython: Allow BaseBytes in asWritable, add new frombytes to StringUtil.
frank.wierzbicki
jython-checkins at python.org
Thu Jun 7 21:18:27 CEST 2012
http://hg.python.org/jython/rev/9777f6d57240
changeset: 6684:9777f6d57240
user: Frank Wierzbicki <fwierzbicki at gmail.com>
date: Thu Jun 07 12:18:04 2012 -0700
summary:
Allow BaseBytes in asWritable, add new frombytes to StringUtil.
Thanks Jeff Allen for frombytes code.
files:
src/org/python/core/util/StringUtil.java | 16 +++++++++-
src/org/python/modules/_fileio/PyFileIO.java | 3 +
2 files changed, 18 insertions(+), 1 deletions(-)
diff --git a/src/org/python/core/util/StringUtil.java b/src/org/python/core/util/StringUtil.java
--- a/src/org/python/core/util/StringUtil.java
+++ b/src/org/python/core/util/StringUtil.java
@@ -5,6 +5,7 @@
import java.nio.ByteBuffer;
import org.python.core.Py;
+import org.python.core.BaseBytes;
/**
* String Utility methods.
@@ -66,7 +67,20 @@
}
/**
- * Decapitalize a String if it begins with a capital letter, e.g.:
+ * Return a new String with chars corresponding to b.
+ *
+ * @param b a BaseBytes containing bytes
+ * @return a new String corresponding to the bytes in b
+ */
+ public static String fromBytes(BaseBytes b) {
+
+ int size = b.__len__();
+ StringBuilder buf = new StringBuilder(size);
+ for (int j = 0; j < size; j++) buf.append((char) b.intAt(j));
+ return buf.toString();
+ }
+
+ /** Decapitalize a String if it begins with a capital letter, e.g.:
* FooBar -> fooBar
*
* @param string a String
diff --git a/src/org/python/modules/_fileio/PyFileIO.java b/src/org/python/modules/_fileio/PyFileIO.java
--- a/src/org/python/modules/_fileio/PyFileIO.java
+++ b/src/org/python/modules/_fileio/PyFileIO.java
@@ -5,6 +5,7 @@
import java.util.concurrent.Callable;
import org.python.core.ArgParser;
+import org.python.core.BaseBytes;
import org.python.core.BuiltinDocs;
import org.python.core.Py;
import org.python.core.PyArray;
@@ -231,6 +232,8 @@
return ((PyString) obj).getString();
} else if (obj instanceof PyArray) {
return ((PyArray)obj).tostring();
+ } else if (obj instanceof BaseBytes) {
+ return StringUtil.fromBytes((BaseBytes)obj);
}
if (message == null) {
message = String.format("argument 1 must be string or buffer, not %.200s",
--
Repository URL: http://hg.python.org/jython
More information about the Jython-checkins
mailing list