Catrobat.IDE.Core.Formulas.FormulaInterpreter.CompleteNumber C# (CSharp) Method

CompleteNumber() private method

private CompleteNumber ( IList tokens, int index ) : IEnumerable
tokens IList
index int
return IEnumerable
        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;
            }
        }