[Jython-checkins] jython: More inf string values, getIndex in ArgParser.

frank.wierzbicki jython-checkins at python.org
Tue Jan 8 17:52:19 CET 2013


http://hg.python.org/jython/rev/7bd335f417c8
changeset:   6941:7bd335f417c8
user:        Frank Wierzbicki <fwierzbicki at gmail.com>
date:        Mon Jan 07 16:48:48 2013 -0800
summary:
  More inf string values, getIndex in ArgParser.

Now allowing +inf and infinity for spelling infinity.
Added getIndex to ArgParser for getting an index. Used in round() builtin.

files:
  src/org/python/core/ArgParser.java   |  23 ++++++++++++++++
  src/org/python/core/PyString.java    |   6 +++-
  src/org/python/core/__builtin__.java |   2 +-
  3 files changed, 29 insertions(+), 2 deletions(-)


diff --git a/src/org/python/core/ArgParser.java b/src/org/python/core/ArgParser.java
--- a/src/org/python/core/ArgParser.java
+++ b/src/org/python/core/ArgParser.java
@@ -189,6 +189,29 @@
     }
 
     /**
+     * Return an required argument as an index.
+     * 
+     * @param pos The position of the argument. First argument is numbered 0.
+     */
+    public int getIndex(int pos) {
+        PyObject value = getRequiredArg(pos);
+        return value.asIndex();
+    }
+
+    /**
+     * Return an optional argument as an index.
+     * 
+     * @param pos The position of the argument. First argument is numbered 0.
+     */
+    public int getIndex(int pos, int def) {
+        PyObject value = getOptionalArg(pos);
+        if (value == null) {
+            return def;
+        }
+        return value.asIndex();
+    }
+
+    /**
      * Return a required argument as a PyObject.
      * 
      * @param pos The position of the argument. First argument is numbered 0.
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
@@ -1600,8 +1600,12 @@
             String lowSval = sval.toLowerCase();
             if (lowSval.equals("nan")) return Double.NaN;
             else if (lowSval.equals("inf")) return Double.POSITIVE_INFINITY;
+            else if (lowSval.equals("+inf")) return Double.POSITIVE_INFINITY;
             else if (lowSval.equals("-inf")) return Double.NEGATIVE_INFINITY;
-            
+            else if (lowSval.equals("infinity")) return Double.POSITIVE_INFINITY;
+            else if (lowSval.equals("+infinity")) return Double.POSITIVE_INFINITY;
+            else if (lowSval.equals("-infinity")) return Double.NEGATIVE_INFINITY;
+             
             if (lowSval.endsWith("d") || lowSval.endsWith("f")) {
                 throw new NumberFormatException("format specifiers not allowed");
             }
diff --git a/src/org/python/core/__builtin__.java b/src/org/python/core/__builtin__.java
--- a/src/org/python/core/__builtin__.java
+++ b/src/org/python/core/__builtin__.java
@@ -1578,7 +1578,7 @@
     public PyObject __call__(PyObject args[], String kwds[]) {
         ArgParser ap = new ArgParser("round", args, kwds, new String[] {"number", "ndigits"}, 0);
         PyObject number = ap.getPyObject(0);
-        int ndigits = ap.getInt(1, 0);
+        int ndigits = ap.getIndex(1, 0);
         return round(number.asDouble(), ndigits);
     }
 

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


More information about the Jython-checkins mailing list