AvalonStudio.Debugging.Extensions.ToArray C# (CSharp) Method

ToArray() public static method

public static ToArray ( this data ) : string[]
data this
return string[]
		public static string[] ToArray(this string data)
		{
			var results = new List<string>();

			if (data != string.Empty)
			{
				var stateStack = new Stack<ArrayProcessState>();
				var currentState = ArrayProcessState.parsingText;

				var currentString = string.Empty;

				if (data[0] != '[' || data[data.Length - 1] != ']')
				{
					throw new Exception("Array is not contained in braces.");
				}

				foreach (var c in data.RemoveBraces()) //TODO Throw an exception if not surrounded by '[]'
				{
					switch (currentState)
					{
						case ArrayProcessState.parsingText:
							switch (c)
							{
								case '{':
									stateStack.Push(currentState);
									currentState = ArrayProcessState.parsingObject;
									currentString += c;
									break;

								case ',':
									results.Add(currentString);
									currentString = string.Empty;
									break;

								default:
									currentString += c;
									break;
							}
							break;

						case ArrayProcessState.parsingObject:
							switch (c)
							{
								case '{':
									stateStack.Push(currentState);
									currentState = ArrayProcessState.parsingObject;
									currentString += c;
									break;

								case '}':
									currentState = stateStack.Pop();
									currentString += c;
									break;

								default:
									currentString += c;
									break;
							}
							break;
					}
				}

				if (currentString.Trim() != string.Empty)
				{
					results.Add(currentString);
				}
			}

			return results.ToArray();
		}