Is this a good idea? I think returning nil from a syntax error is generally a good thing, and that's precisely the reason I added that. We check for a nil return in BibTeXParser, and other parts of the code should check for it as well.
On Wednesday, January 16, 2008, at 02:50PM, <[EMAIL PROTECTED]> wrote: >Revision: 12523 > http://bibdesk.svn.sourceforge.net/bibdesk/?rev=12523&view=rev >Author: hofman >Date: 2008-01-16 14:50:39 -0800 (Wed, 16 Jan 2008) > >Log Message: >----------- >Don't return nil when detexification fails. > >Modified Paths: >-------------- > trunk/bibdesk/BDSKConverter.m > >Modified: trunk/bibdesk/BDSKConverter.m >=================================================================== >--- trunk/bibdesk/BDSKConverter.m 2008-01-16 22:35:31 UTC (rev 12522) >+++ trunk/bibdesk/BDSKConverter.m 2008-01-16 22:50:39 UTC (rev 12523) >@@ -137,33 +137,39 @@ > [self setDetexifyAccents:[wholeDict > objectForKey:TEX_TO_ROMAN_ACCENTS_KEY]]; > } > >+- (NSString *)copyComplexString:(BDSKComplexString *)cs >byCopyingStringNodesUsingSelector:(SEL)copySelector { >+ NSEnumerator *nodeEnum = [[cs nodes] objectEnumerator]; >+ BDSKStringNode *node, *newNode; >+ NSMutableArray *nodes = [[NSMutableArray alloc] initWithCapacity:[[cs >nodes] count]]; >+ NSString *string; >+ >+ while(node = [nodeEnum nextObject]){ >+ if([node type] == BSN_STRING){ >+ string = [self performSelector:copySelector withObject:[node >value]]; >+ newNode = [[BDSKStringNode alloc] initWithQuotedString:string]; >+ [string release]; >+ } else { >+ newNode = [node copy]; >+ } >+ [nodes addObject:newNode]; >+ [newNode release]; >+ } >+ >+ string = [[NSString alloc] initWithNodes:nodes macroResolver:[cs >macroResolver]]; >+ [nodes release]; >+ return string; >+} >+ > - (NSString *)copyStringByTeXifyingString:(NSString *)s{ > > // TeXify only string nodes of complex strings; > if([s isComplex]){ >- BDSKComplexString *cs = (BDSKComplexString *)s; >- NSEnumerator *nodeEnum = [[cs nodes] objectEnumerator]; >- BDSKStringNode *node, *newNode; >- NSMutableArray *nodes = [[NSMutableArray alloc] >initWithCapacity:[[cs nodes] count]]; >- NSString *string; >- >- while(node = [nodeEnum nextObject]){ >- if([node type] == BSN_STRING){ >- string = [self >copyStringByTeXifyingString:[node value]]; >- if(string == nil) break; >- newNode = [[BDSKStringNode alloc] >initWithQuotedString:string]; >- [string release]; >- } else { >- newNode = [node copy]; >- } >- [nodes addObject:newNode]; >- [newNode release]; >- } >- >- string = [[NSString alloc] initWithNodes:nodes macroResolver:[cs >macroResolver]]; >- [nodes release]; >- return string; >+ return [self copyComplexString:(BDSKComplexString *)s >byCopyingStringNodesUsingSelector:_cmd]; > } >+ >+ if([NSString isEmptyString:s]){ >+ return [s retain]; >+ } > > // we expect to find composed accented characters, as this is also what > we use in the CharacterConversion plist > NSMutableString *precomposedString = [s mutableCopy]; >@@ -264,31 +270,14 @@ > > - (NSString *)copyStringByDeTeXifyingString:(NSString *)s{ > >- if([NSString isEmptyString:s]){ >- return [s retain]; >- } >- > // deTeXify only string nodes of complex strings; > if([s isComplex]){ >- BDSKComplexString *cs = (BDSKComplexString *)s; >- NSEnumerator *nodeEnum = [[cs nodes] objectEnumerator]; >- BDSKStringNode *node, *newNode; >- NSMutableArray *nodes = [NSMutableArray arrayWithCapacity:[[cs >nodes] count]]; >- NSString *string; >- >- while(node = [nodeEnum nextObject]){ >- if([node type] == BSN_STRING){ >- string = [self >copyStringByDeTeXifyingString:[node value]]; >- newNode = [[BDSKStringNode alloc] >initWithQuotedString:string]; >- [string release]; >- } else { >- newNode = [node copy]; >- } >- [nodes addObject:newNode]; >- [newNode release]; >- } >- return [[NSString alloc] initWithNodes:nodes macroResolver:[cs >macroResolver]]; >+ return [self copyComplexString:(BDSKComplexString *)s >byCopyingStringNodesUsingSelector:_cmd]; > } >+ >+ if([NSString isEmptyString:s]){ >+ return [s retain]; >+ } > > NSMutableString *tmpConv = nil; > NSString *TEXString = nil; >@@ -328,8 +317,7 @@ > range = [convertedSoFar rangeOfString:@"{\\" options:0 > range:NSMakeRange(replaceRange.location + 1, length - replaceRange.location - > 1)]; > } else { > NSLog(@"missing brace in string %@", convertedSoFar); >- [convertedSoFar release]; >- return nil; >+ range = NSMakeRange(NSNotFound, 0); > } > > } > > >This was sent by the SourceForge.net collaborative development platform, the >world's largest Open Source development site. > >------------------------------------------------------------------------- >This SF.net email is sponsored by: Microsoft >Defy all challenges. Microsoft(R) Visual Studio 2008. >http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ >_______________________________________________ >Bibdesk-commit mailing list >[EMAIL PROTECTED] >https://lists.sourceforge.net/lists/listinfo/bibdesk-commit > > ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ Bibdesk-develop mailing list Bibdesk-develop@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/bibdesk-develop