private static LibraryDependencyTarget ParseMultiFlag(string flag, int end) { var result = LibraryDependencyTarget.None; var flagsAdded = 0; var start = 0; do { var segment = StringSegment.CreateTrimmed(flag, start, end - 1); if (segment.Length > 0) { flagsAdded++; result |= ParseSingleFlag(segment); } start = end + 1; if (start >= flag.Length) { // Reached end, don't look for next comma break; } end = flag.IndexOf(',', start); if (end == -1) { end = flag.Length; } } while (true); return(flagsAdded > 0 ? result : LibraryDependencyTarget.All); }
/// <summary> /// Convert flag string into a LibraryTypeFlag. /// </summary> public static LibraryDependencyTarget Parse(string flag) { // If the LibraryDependency does not have a flag value it is considered all if (string.IsNullOrEmpty(flag)) { return(LibraryDependencyTarget.All); } var flagEnd = flag.IndexOf(','); if (flagEnd == -1) { var segment = StringSegment.CreateTrimmed(flag, 0, flag.Length - 1); if (segment.Length == 0) { return(LibraryDependencyTarget.All); } return(ParseSingleFlag(segment)); } else { return(ParseMultiFlag(flag, flagEnd)); } }