You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xalan.apache.org by jd...@locus.apache.org on 2000/03/17 22:45:19 UTC

cvs commit: xml-xalan/c/src/XSLT NumeratorFormatter.cpp

jdonohue    00/03/17 13:45:19

  Modified:    c/src/XSLT NumeratorFormatter.cpp
  Log:
  Fixed problems with tokenizing format string
  
  Revision  Changes    Path
  1.5       +22 -19    xml-xalan/c/src/XSLT/NumeratorFormatter.cpp
  
  Index: NumeratorFormatter.cpp
  ===================================================================
  RCS file: /home/cvs/xml-xalan/c/src/XSLT/NumeratorFormatter.cpp,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- NumeratorFormatter.cpp	2000/02/29 20:54:23	1.4
  +++ NumeratorFormatter.cpp	2000/03/17 21:45:18	1.5
  @@ -558,19 +558,23 @@
   
   	const int	start = m_currentPosition;
   
  -	while ((m_currentPosition < m_maxPosition) && 
  -		   isLetterOrDigit(charAt(m_str, m_currentPosition))) 
  +	if (isLetterOrDigit(charAt(m_str, m_currentPosition)))
   	{
  -		m_currentPosition++;
  +		while ((m_currentPosition < m_maxPosition) &&
  +				isLetterOrDigit(charAt(m_str, m_currentPosition))) 
  +			m_currentPosition++;
   	}
  -
  -	if ((start == m_currentPosition) &&
  -		(!isLetterOrDigit(charAt(m_str, m_currentPosition)))) 
  +	else
   	{
  -		m_currentPosition++;
  +		while ((m_currentPosition < m_maxPosition) &&
  +				!isLetterOrDigit(charAt(m_str, m_currentPosition))) 
  +			m_currentPosition++;
   	}
   
  -	return substring(m_str, start, m_currentPosition);
  +	// @@ This didn't seem to be working right when start=current=0
  +	// return substring(m_str, start, m_currentPosition);
  +	DOMString sub = substring(m_str, start, m_currentPosition);
  +	return DOMString(toCharArray(sub), m_currentPosition-start);
   }
   
   
  @@ -581,24 +585,23 @@
   	int 	count = 0;
   	int 	currpos = m_currentPosition;
   
  +	// Tokens consist of sequences of alphabetic characters and sequences of
  +	// non-alphabetic characters
   	while (currpos < m_maxPosition) 
   	{
  -		const int	start = currpos;
  -
  -		while ((currpos < m_maxPosition) &&
  -				isLetterOrDigit(charAt(m_str, currpos))) 
  +		if (isLetterOrDigit(charAt(m_str, currpos)))
   		{
  -			currpos++;
  +			while ((currpos < m_maxPosition) &&
  +					isLetterOrDigit(charAt(m_str, currpos))) 
  +				currpos++;
   		}
  -
  -		if ((start == currpos) &&
  -			(isLetterOrDigit(charAt(m_str, currpos)) == false)) 
  +		else
   		{
  -			currpos++;
  +			while ((currpos < m_maxPosition) &&
  +					!isLetterOrDigit(charAt(m_str, currpos))) 
  +				currpos++;
   		}
  -
   		count++;
   	}
  -
   	return count;
   }