Skip to content

Commit

Permalink
Add support for reading some 3rd party docsets, e.g. the Facebook API.
Browse files Browse the repository at this point in the history
  • Loading branch information
beelsebob committed Dec 25, 2012
1 parent 0c89de5 commit 2f86de0
Showing 1 changed file with 27 additions and 11 deletions.
38 changes: 27 additions & 11 deletions Stash/STADocSet.m
Expand Up @@ -127,35 +127,51 @@ - (void)processURL:(NSURL *)url
if (nil != n) if (nil != n)
{ {
NSScanner *scanner = [NSScanner scannerWithString:n]; NSScanner *scanner = [NSScanner scannerWithString:n];
NSString *apiName;
NSString *dump; NSString *dump;
NSString *language; NSString *language;
NSString *symbolType; NSString *symbolType;
NSString *parent; NSString *parent;
NSString *symbol; NSString *symbol;
BOOL success = [scanner scanString:@"//apple_ref/" intoString:&dump]; BOOL success = [scanner scanString:@"//" intoString:&dump];
if (!success) { continue; } if (!success) { continue; }
success = [scanner scanUpToString:@"/" intoString:&language]; success = [scanner scanUpToString:@"/" intoString:&apiName];
[scanner setScanLocation:[scanner scanLocation] + 1];
if (!success || [language isEqualToString:@"doc"]) { continue; }
success = [scanner scanUpToString:@"/" intoString:&symbolType];
[scanner setScanLocation:[scanner scanLocation] + 1]; [scanner setScanLocation:[scanner scanLocation] + 1];
if (!success) { continue; } if (!success) { continue; }
success = [scanner scanUpToString:@"/" intoString:&parent];
STASymbol *s = nil; STASymbol *s = nil;
NSString *fullPath = [path stringByAppendingFormat:@"#%@", n]; if ([apiName isEqualToString:@"api"])
if ([scanner scanLocation] < [n length] - 1)
{ {
success = [scanner scanUpToString:@"/" intoString:&dump];
[scanner setScanLocation:[scanner scanLocation] + 1]; [scanner setScanLocation:[scanner scanLocation] + 1];
if (!success) { continue; }
success = [scanner scanUpToString:@"/" intoString:&symbol]; success = [scanner scanUpToString:@"/" intoString:&symbol];
s = [[STASymbol alloc] initWithLanguageString:language symbolTypeString:symbolType symbolName:symbol parentName:parent url:[NSURL URLWithString:fullPath] docSet:self]; NSString *fullPath = [path stringByAppendingFormat:@"#%@", n];
s = [[STASymbol alloc] initWithLanguageString:nil symbolTypeString:nil symbolName:symbol url:[NSURL URLWithString:fullPath] docSet:self];
} }
else else
{ {
s = [[STASymbol alloc] initWithLanguageString:language symbolTypeString:symbolType symbolName:parent url:[NSURL URLWithString:fullPath] docSet:self]; success = [scanner scanUpToString:@"/" intoString:&language];
[scanner setScanLocation:[scanner scanLocation] + 1];
if (!success || [language isEqualToString:@"doc"]) { continue; }
success = [scanner scanUpToString:@"/" intoString:&symbolType];
[scanner setScanLocation:[scanner scanLocation] + 1];
if (!success) { continue; }
success = [scanner scanUpToString:@"/" intoString:&parent];
NSString *fullPath = [path stringByAppendingFormat:@"#%@", n];
if ([scanner scanLocation] < [n length] - 1)
{
[scanner setScanLocation:[scanner scanLocation] + 1];
success = [scanner scanUpToString:@"/" intoString:&symbol];
s = [[STASymbol alloc] initWithLanguageString:language symbolTypeString:symbolType symbolName:symbol parentName:parent url:[NSURL URLWithString:fullPath] docSet:self];
}
else
{
s = [[STASymbol alloc] initWithLanguageString:language symbolTypeString:symbolType symbolName:parent url:[NSURL URLWithString:fullPath] docSet:self];
}
} }


STASymbolType t = [s symbolType]; STASymbolType t = [s symbolType];
if (t != STASymbolTypeBinding && t != STASymbolTypeTag && t != STASymbolTypeUnknown && [s language] != STALanguageUnknown) if (t != STASymbolTypeBinding && t != STASymbolTypeTag)
{ {
[[self symbols] addObject:s]; [[self symbols] addObject:s];
} }
Expand Down

0 comments on commit 2f86de0

Please sign in to comment.