[prev in list] [next in list] [prev in thread] [next in thread] 

List:       xalan-cvs
Subject:    cvs commit: xml-xalan/java/src/org/apache/xpath/objects XString.java
From:       minchau () apache ! org
Date:       2004-07-22 22:47:25
Message-ID: 20040722224725.10785.qmail () minotaur ! apache ! org
[Download RAW message or body]

minchau     2004/07/22 15:47:25

  Modified:    java/src/org/apache/xpath/objects XString.java
  Log:
  Submitted by:	Yash Talwar
  Reviewed by:	Brian Minchau
  Fix for bugzilla 29655
  
  Revision  Changes    Path
  1.15      +23 -89    xml-xalan/java/src/org/apache/xpath/objects/XString.java
  
  Index: XString.java
  ===================================================================
  RCS file: /home/cvs/xml-xalan/java/src/org/apache/xpath/objects/XString.java,v
  retrieving revision 1.14
  retrieving revision 1.15
  diff -u -r1.14 -r1.15
  --- XString.java	17 Feb 2004 04:34:38 -0000	1.14
  +++ XString.java	22 Jul 2004 22:47:25 -0000	1.15
  @@ -110,96 +110,30 @@
      */
     public double toDouble()
     {
  -    int end = length();
  -    
  -    if(0 == end)
  -      return Double.NaN;
  -
  -    double result = 0.0;
  -    int start = 0;
  -    int punctPos = end-1;
  -
  -    // Scan to first whitespace character.
  -    for (int i = start; i < end; i++)
  -    {
  -      char c = charAt(i);
  -
  -      if (!XMLCharacterRecognizer.isWhiteSpace(c))
  -      {
  -        break;
  -      }
  -      else
  -        start++;
  -    }
  -
  -    double sign = 1.0;
  -
  -    if (start < end && charAt(start) == '-')
  -    {
  -      sign = -1.0;
  -
  -      start++;
  -    }
  -
  -    int digitsFound = 0;
  -
  -    for (int i = start; i < end; i++)  // parse the string from left to right \
                converting the integer part
  -    {
  -      char c = charAt(i);
  -
  -      if (c != '.')
  -      {
  -        if (XMLCharacterRecognizer.isWhiteSpace(c))
  -          break;
  -        else if (Character.isDigit(c))
  -        {
  -          result = result * 10.0 + (c - 0x30);
  -
  -          digitsFound++;
  +    /* XMLCharacterRecognizer.isWhiteSpace(char c) methods treats the following 
  +     * characters as white space characters.
  +     * ht - horizontal tab, nl - newline , cr - carriage return and sp - space
  +     * trim() methods by default also takes care of these white space characters
  +     * So trim() method is used to remove leading and trailing white spaces.
  +     */
  +	XMLString s = trim();
  +	double result = Double.NaN;
  +	for (int i = 0; i < s.length(); i++)
  +	{
  +		char c = s.charAt(i);
  +		if (c != '-' & c != '.' & ( c < 0X30 | c > 0x39)) {
  +            // The character is not a '-' or a '.' or a digit
  +            // then return NaN because something is wrong.
  +			return result;
           }
  -        else
  -        {
  -          return Double.NaN;
  -        }
  -      }
  -      else
  -      {
  -        punctPos = i;
  -
  -        break;
  -      }
  -    }
  -
  -    if (charAt(punctPos) == '.')  // parse the string from the end to the '.' \
                converting the fractional part
  -    {
  -      double fractPart = 0.0;
  -
  -      for (int i = end - 1; i > punctPos; i--)
  -      {
  -        char c = charAt(i);
  -
  -        if (XMLCharacterRecognizer.isWhiteSpace(c))
  -          break;
  -        else if (Character.isDigit(c))
  -        {
  -          fractPart = fractPart / 10.0 + (c - 0x30);
  -
  -          digitsFound++;
  -        }
  -        else
  -        {
  -          return Double.NaN;
  -        }
  -      }
  -
  -      result += fractPart / 10.0;
  -    }
  -
  -    if (0 == digitsFound)
  -      return Double.NaN;
  +	}
  +	try
  +	{
  +		result = Double.parseDouble(s.toString());
  +	} catch (NumberFormatException e){}
   
  -    return result * sign;
  -  }
  +	return result;
  +}
   
     /**
      * Cast result object to a boolean.
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: xalan-cvs-unsubscribe@xml.apache.org
For additional commands, e-mail: xalan-cvs-help@xml.apache.org


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic