private IEnumerable<IFormulaToken> CompleteNumber(IList<IFormulaToken> tokens, int index)
{
var token = tokens[index];
var containsDecimalSeparator = tokens[index] is FormulaTokenDecimalSeparator;
// gather tokens before
var tokensBefore = new List<IFormulaToken>();
foreach (var numberToken in tokens.Take(index).Reverse().Select(token2 => token2 as IFormulaNumber).TakeWhile(numberToken => numberToken != null))
{
if (numberToken is FormulaTokenDecimalSeparator)
{
if (containsDecimalSeparator) break;
containsDecimalSeparator = true;
}
tokensBefore.Insert(0, numberToken);
}
foreach (var token2 in tokensBefore)
{
yield return token2;
}
yield return token;
// gather tokens afterwards
foreach (var numberToken in tokens.Skip(index + 1).Select(token2 => token2 as IFormulaNumber).TakeWhile(numberToken => numberToken != null))
{
if (numberToken is FormulaTokenDecimalSeparator)
{
if (containsDecimalSeparator) break;
containsDecimalSeparator = true;
}
yield return numberToken;
}
}