This is an automated email from the ASF dual-hosted git repository.

ericbarnhill pushed a commit to branch fraction-dev
in repository https://gitbox.apache.org/repos/asf/commons-numbers.git


The following commit(s) were added to refs/heads/fraction-dev by this push:
     new 9a4792c  NUMBERS-74: added parse() method to Fraction
9a4792c is described below

commit 9a4792cc1cd265d12dde033ac818ef3dea5de816
Author: Eric Barnhill <ericbarnh...@protonmail.ch>
AuthorDate: Tue Feb 26 16:14:16 2019 -0800

    NUMBERS-74: added parse() method to Fraction
---
 .../apache/commons/numbers/fraction/Fraction.java  | 24 ++++++++++++++++++++++
 1 file changed, 24 insertions(+)

diff --git 
a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/Fraction.java
 
b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/Fraction.java
index 2ec1559..0e3d76f 100644
--- 
a/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/Fraction.java
+++ 
b/commons-numbers-fraction/src/main/java/org/apache/commons/numbers/fraction/Fraction.java
@@ -17,6 +17,7 @@
 package org.apache.commons.numbers.fraction;
 
 import java.io.Serializable;
+
 import org.apache.commons.numbers.core.ArithmeticUtils;
 import org.apache.commons.numbers.core.NativeOperators;
 
@@ -630,4 +631,27 @@ public class Fraction
         }
         return str;
     }
+    
+    /**
+     * Parses a string that would be produced by {@link #toString()}
+     * and instantiates the corresponding object.
+     *
+     * @param s String representation.
+     * @return an instance.
+     * @throws IllegalArgumentException if the string does not
+     * conform to the specification.
+     */
+    public static Fraction parse(String s) {
+        final int len = s.length();
+        final int slashLoc = s.indexOf("/");
+        // if no slash, parse as single number
+        if (slashLoc == -1) {
+               return Fraction.of(Integer.parseInt(s));
+        } else {
+               final int num = Integer.parseInt(s.substring(0, 
slashLoc).trim());
+            final int denom = Integer.parseInt(s.substring(slashLoc + 
1).trim());
+            return of(num, denom);
+        }
+    }
+
 }
\ No newline at end of file

Reply via email to