Range GetPathRange(GetPathType type, Range range) { var path = GetString(range); var dirLength = Math.Max(0, path.LastIndexOf('\\')); if ((path.StartsWith(@"\\")) && (dirLength == 1)) dirLength = 0; var dirTotal = dirLength == 0 ? 0 : dirLength + 1; var extLen = Path.GetExtension(path).Length; switch (type) { case GetPathType.FileName: return new Range(range.End, range.Start + dirTotal); case GetPathType.FileNameWoExtension: return new Range(range.End - extLen, range.Start + dirTotal); case GetPathType.Directory: return new Range(range.Start + dirLength, range.Start); case GetPathType.Extension: return new Range(range.End, range.End - extLen); default: throw new ArgumentException(); } }
void Command_Files_Select_Name(GetPathType type) => Selections.Replace(Selections.AsParallel().AsOrdered().Select(range => GetPathRange(type, range)).ToList());