in wwauth/Google.Solutions.WWAuth/Util/LinqExtensions.cs [52:91]
public static IEnumerable<string> SplitQuotedString(
this string s,
params char[] separator)
{
var splits = new List<string>();
bool inQuotedSegment = false;
var segments = s.Split('\'', '"');
for (int i = 0; i < segments.Length; i++)
{
segments[i] = segments[i].Trim(separator);
if (segments[i].Length == 0 &&
(i == 0 || i == segments.Length - 1))
{
//
// String starts/ends with a quote - skip
// that segment.
//
}
else if (inQuotedSegment)
{
//
// Treat as one.
//
splits.Add(segments[i]);
}
else
{
//
// Split as normal.
//
splits.AddRange(segments[i].Split(separator));
}
inQuotedSegment = !inQuotedSegment;
}
return splits;
}