From 23b39fc576043618ef2e5d65464b5d8036fe2764 Mon Sep 17 00:00:00 2001 From: nate-parrott Date: Tue, 10 Feb 2015 15:35:02 -0500 Subject: [PATCH] update @file --- .../FlashlightKit/PSFileSource.m | 31 +++++++++++++++++-- .../FlashlightKit/FlashlightKit/PSHelpers.h | 2 ++ .../FlashlightKit/FlashlightKit/PSHelpers.m | 10 ++++++ .../FlashlightKit/PSPluginDispatcher.m | 4 --- 4 files changed, 40 insertions(+), 7 deletions(-) diff --git a/FlashlightApp/FlashlightKit/FlashlightKit/PSFileSource.m b/FlashlightApp/FlashlightKit/FlashlightKit/PSFileSource.m index e471a16e..1056f9ec 100644 --- a/FlashlightApp/FlashlightKit/FlashlightKit/PSFileSource.m +++ b/FlashlightApp/FlashlightKit/FlashlightKit/PSFileSource.m @@ -92,6 +92,8 @@ - (PSParsnipFieldProcessor)fieldProcessor { MDQueryRef query = MDQueryCreate(kCFAllocatorDefault, (CFStringRef)[self MDQueryStringForSearch:searchQuery], nil, nil); MDQuerySetMaxCount(query, 10); MDQuerySetSearchScope(query, (CFArrayRef)@[(id)kMDQueryScopeComputerIndexed], 0); + MDQuerySetSortOrder(query, (CFArrayRef)@[(id)kMDItemFSContentChangeDate]); + MDQuerySetSortOptionFlagsForAttribute(query, kMDItemFSContentChangeDate, kMDQueryReverseSortOrderFlag); if (!MDQueryExecute(query, kMDQuerySynchronous)) { NSLog(@"Search failed."); return nil; @@ -102,14 +104,15 @@ - (PSParsnipFieldProcessor)fieldProcessor { MDItemRef item = (MDItemRef)MDQueryGetResultAtIndex(query, i); [mdItems addObject:(__bridge id)item]; } - [mdItems sortUsingComparator:^NSComparisonResult(id obj1, id obj2) { + /*[mdItems sortUsingComparator:^NSComparisonResult(id obj1, id obj2) { NSNumber *r1 = CFBridgingRelease(MDItemCopyAttribute((MDItemRef)obj1, kMDQueryResultContentRelevance)); NSNumber *r2 = CFBridgingRelease(MDItemCopyAttribute((MDItemRef)obj2, kMDQueryResultContentRelevance)); return [r2 compare:r1]; - }]; + }];*/ NSArray *paths = [mdItems mapFilter:^id(id obj) { return CFBridgingRelease(MDItemCopyAttribute((MDItemRef)obj, kMDItemPath)); }]; + paths = [[self class] sortPaths:paths]; return @{ @"query": searchQuery, @"path": paths.firstObject ? : [NSNull null], @@ -141,7 +144,7 @@ - (NSDictionary *)directoryNameToPathMap { - (NSString *)MDQueryStringForSearch:(NSString *)search { NSString *escaped = [[[search stringByReplacingOccurrencesOfString:@"\\" withString:@"\\\\"] stringByReplacingOccurrencesOfString:@"'" withString:@"\\'"] stringByReplacingOccurrencesOfString:@"*" withString:@"\\*"]; - return [NSString stringWithFormat:@"kMDItemDisplayName == '%@'cd", escaped]; + return [NSString stringWithFormat:@"kMDItemFSName == '%@*'cd ", escaped]; } + (NSArray *)selectedFinderItems:(BOOL)justFolders { @@ -185,4 +188,26 @@ + (NSArray *)getPathsFromItems:(NSArray *)items onlyFolders:(BOOL)onlyFolders { }]; } ++ (NSArray *)sortPaths:(NSArray *)paths { + NSDictionary *modDates = [paths mapToDict:^id(__autoreleasing id *key) { + NSString *path = (*key); + *key = path; + return [[NSFileManager defaultManager] attributesOfItemAtPath:path error:nil][NSFileModificationDate]; + }]; + NSString *homeDir = NSHomeDirectory(); + return [paths sortedArrayUsingComparator:^NSComparisonResult(id obj1, id obj2) { + BOOL homeDir1 = [obj1 startsWith:homeDir]; + BOOL homeDir2 = [obj2 startsWith:homeDir]; + if (homeDir1 != homeDir2) { + return homeDir1 ? NSOrderedAscending : NSOrderedDescending; + } + NSDate *mod1 = modDates[obj1]; + NSDate *mod2 = modDates[obj2]; + if (![mod1 isEqualToDate:mod2]) { + return -[mod1 compare:mod2]; + } + return NSOrderedSame; + }]; +} + @end diff --git a/FlashlightApp/FlashlightKit/FlashlightKit/PSHelpers.h b/FlashlightApp/FlashlightKit/FlashlightKit/PSHelpers.h index f534aae3..e7fcc9ec 100644 --- a/FlashlightApp/FlashlightKit/FlashlightKit/PSHelpers.h +++ b/FlashlightApp/FlashlightKit/FlashlightKit/PSHelpers.h @@ -23,6 +23,8 @@ extern const double PSFreeTextProbability; - (NSString *)toJson; +- (NSDictionary *)mapToDict:(id(^)(id *key))mapper; + @end double PSLogProb(double prob); diff --git a/FlashlightApp/FlashlightKit/FlashlightKit/PSHelpers.m b/FlashlightApp/FlashlightKit/FlashlightKit/PSHelpers.m index 9ccad372..bf8e1ed2 100644 --- a/FlashlightApp/FlashlightKit/FlashlightKit/PSHelpers.m +++ b/FlashlightApp/FlashlightKit/FlashlightKit/PSHelpers.m @@ -51,6 +51,16 @@ - (id)reduce:(id(^)(id obj1, id obj2))reduceBlock initialVal:(id)initialVal { return val; } +- (NSDictionary *)mapToDict:(id(^)(id *key))mapper { + NSMutableDictionary *d = [NSMutableDictionary dictionaryWithCapacity:self.count]; + for (id obj in self) { + id key = obj; + id val = mapper(&key); + d[key] = val; + } + return d; +} + @end double PSLogProb(double prob) { diff --git a/FlashlightApp/FlashlightKit/FlashlightKit/PSPluginDispatcher.m b/FlashlightApp/FlashlightKit/FlashlightKit/PSPluginDispatcher.m index 52c52f71..c58262c9 100644 --- a/FlashlightApp/FlashlightKit/FlashlightKit/PSPluginDispatcher.m +++ b/FlashlightApp/FlashlightKit/FlashlightKit/PSPluginDispatcher.m @@ -104,10 +104,6 @@ - (PSParseCandidate *)outstandingResultFromResults:(NSArray *)results { NSString * const counterexampleIntentPrefix = @"plugin_intent/"; NSString * const exampleIntentPrefix = @"plugin_intent/"; NSMutableSet *intentsWhereCounterexamplesAlreadyMatched = [NSMutableSet new]; - for (PSParseCandidate *c in results) { - NSLog(@"%@", c.node.tag); - } - NSLog(@"\n"); for (PSParseCandidate *candidate in results) { NSString *tag = candidate.node.tag; if ([tag isEqualToString:nullIntent]) {