Castle.MonoRail.Views.Brail.BrailPreProcessor.GetExpressionsPositions C# (CSharp) Method

GetExpressionsPositions() private static method

Will find all the (outer most ${} expressions in the code, and return their positions). Smart enough to figure out $${} escaping, but not much more
private static GetExpressionsPositions ( string code ) : IList
code string
return IList
		private static IList<ExpressionPosition> GetExpressionsPositions(string code)
		{
			List<ExpressionPosition> bracesPositions = new List<ExpressionPosition>();
			bool prevCharWasDollar = false;
			for (int index = 0; index < code.Length; index++)
			{
				if (code[index] == '{')
				{
					bracesPositions.Add(new ExpressionPosition(index - 1, -1, prevCharWasDollar));
				}
				if (code[index] == '}' && bracesPositions.Count > 0)
				{
					ExpressionPosition position = bracesPositions[bracesPositions.Count - 1];
					if (ParentExpressionIsNotValid(bracesPositions, bracesPositions.Count))
					{
						bracesPositions.RemoveAt(bracesPositions.Count - 1);
					}
					else if (position.End==-1)
					{
						position.End = index;
					}
				}
				//handles escaping expressions with $$ as well
				prevCharWasDollar = code[index] == '$' && !prevCharWasDollar;
			}
			bracesPositions.RemoveAll(delegate(ExpressionPosition obj)
			{
				return !obj.PrevCharWasDollar;
			});
			return bracesPositions;
		}