Castle.MonoRail.Framework.Views.Aspx.DataBindingEvaluator.ExtractIndexerExpression C# (CSharp) Method

ExtractIndexerExpression() private method

private ExtractIndexerExpression ( string expression, int start, int &end ) : string
expression string
start int
end int
return string
		private string ExtractIndexerExpression(string expression, int start, out int end)
		{
			end = start;
			int counter = 0;

			for(int i = start + 1; i < expression.Length; ++i)
			{
				if (Array.Exists(indexExprEndChars,
				                 delegate(char c) { return expression[i] == c; }))
				{
					if (counter == 0)
					{
						end = i;
						expression = expression.Substring(start + 1, i - start - 1);
						return expression;
					}
					else
					{
						--counter;
					}
				}
				else if (Array.Exists(indexExprStartChars,
				                      delegate(char c) { return expression[i] == c; }))
				{
					++counter;
				}
			}

			throw new ArgumentException("Mismatched index expression");
		}
	}