[Jython-checkins] jython: add format and __format__ to PyUnicode. Just using PyString's version for now.

frank.wierzbicki jython-checkins at python.org
Wed Apr 11 18:02:15 CEST 2012


http://hg.python.org/jython/rev/2aef40e6d51c
changeset:   6564:2aef40e6d51c
user:        Frank Wierzbicki <fwierzbicki at gmail.com>
date:        Wed Apr 11 09:02:02 2012 -0700
summary:
  add format and __format__ to PyUnicode. Just using PyString's version for now.

files:
  src/org/python/core/PyString.java  |   2 +-
  src/org/python/core/PyUnicode.java |  14 ++++++++++++++
  2 files changed, 15 insertions(+), 1 deletions(-)


diff --git a/src/org/python/core/PyString.java b/src/org/python/core/PyString.java
--- a/src/org/python/core/PyString.java
+++ b/src/org/python/core/PyString.java
@@ -2570,7 +2570,7 @@
         }
     }
 
-    private String buildFormattedString(String value, PyObject[] args, String[] keywords, MarkupIterator enclosingIterator) {
+    protected String buildFormattedString(String value, PyObject[] args, String[] keywords, MarkupIterator enclosingIterator) {
         StringBuilder result = new StringBuilder();
         MarkupIterator it = new MarkupIterator(value, enclosingIterator);
         while (true) {
diff --git a/src/org/python/core/PyUnicode.java b/src/org/python/core/PyUnicode.java
--- a/src/org/python/core/PyUnicode.java
+++ b/src/org/python/core/PyUnicode.java
@@ -1340,6 +1340,20 @@
         return new PyTuple(new PyUnicode(this.getString()));
     }
 
+    @Override
+    public PyObject __format__(PyObject formatSpec) {
+        return str___format__(formatSpec);
+    }
+
+    @ExposedMethod(doc = BuiltinDocs.unicode_format_doc)
+    final PyObject unicode_format(PyObject[] args, String[] keywords) {
+        try {
+            return new PyUnicode(buildFormattedString(getString(), args, keywords, null));
+        } catch (IllegalArgumentException e) {
+            throw Py.ValueError(e.getMessage());
+        }
+    }
+
     public Iterator<Integer> iterator() {
         return newSubsequenceIterator();
     }

-- 
Repository URL: http://hg.python.org/jython


More information about the Jython-checkins mailing list