System.Web.Compilation.AspParser.GetInclude C# (CSharp) Method

GetInclude() private method

private GetInclude ( string str, string &pathType, string &filename ) : bool
str string
pathType string
filename string
return bool
		bool GetInclude (string str, out string pathType, out string filename)
		{
			pathType = null;
			filename = null;
			str = str.Substring (2).Trim ();
			int len = str.Length;
			int lastQuote = str.LastIndexOf ('"');
			if (len < 10 || lastQuote != len - 1)
				return false;

			if (!StrUtils.StartsWith (str, "#include ", true))
				return false;

			str = str.Substring (9).Trim ();
			bool isfile = (StrUtils.StartsWith (str ,"file", true));
			if (!isfile && !StrUtils.StartsWith (str, "virtual", true))
				return false;

			pathType = (isfile) ? "file" : "virtual";
			if (str.Length < pathType.Length + 3)
				return false;

			str = str.Substring (pathType.Length).Trim ();
			if (str.Length < 3 || str [0] != '=')
				return false;

			int index = 1;
			for (; index < str.Length; index++) {
				if (Char.IsWhiteSpace (str [index]))
					continue;
				else if (str [index] == '"')
					break;
			}

			if (index == str.Length || index == lastQuote)
				return false;

			str = str.Substring (index);
			if (str.Length == 2) { // only quotes
				OnError ("Empty file name.");
				return false;
			}

			filename = str.Trim ().Substring (index, str.Length - 2);
			if (filename.LastIndexOf  ('"') != -1)
				return false; // file=""" -> no error

			return true;
		}