internal static bool ParseSearchString(string searchText, SearchFilter filter)
{
if (string.IsNullOrEmpty(searchText))
{
return false;
}
filter.ClearSearch();
string searchString = string.Copy(searchText);
RemoveUnwantedWhitespaces(ref searchString);
bool flag2 = false;
int startIndex = FindFirstPositionNotOf(searchString, " \t,*?");
if (startIndex == -1)
{
startIndex = 0;
}
while (startIndex < searchString.Length)
{
int length = searchString.IndexOfAny(" \t,*?".ToCharArray(), startIndex);
int index = searchString.IndexOf('"', startIndex);
int num4 = -1;
if (index != -1)
{
num4 = searchString.IndexOf('"', index + 1);
if (num4 != -1)
{
length = searchString.IndexOfAny(" \t,*?".ToCharArray(), num4);
}
else
{
length = -1;
}
}
if (length == -1)
{
length = searchString.Length;
}
if (length > startIndex)
{
string str2 = searchString.Substring(startIndex, length - startIndex);
if (CheckForKeyWords(str2, filter, index, num4))
{
flag2 = true;
}
else
{
filter.nameFilter = filter.nameFilter + (!string.IsNullOrEmpty(filter.nameFilter) ? " " : "") + str2;
}
}
startIndex = length + 1;
}
return flag2;
}