Revision: 18108
http://bibdesk.svn.sourceforge.net/bibdesk/?rev=18108&view=rev
Author: hofman
Date: 2011-09-06 22:23:09 +0000 (Tue, 06 Sep 2011)
Log Message:
-----------
Save empty file, without template, when there's no data to save, so we don't
get a bibtex error on opening
Modified Paths:
--------------
trunk/bibdesk/BibDocument.m
Modified: trunk/bibdesk/BibDocument.m
===================================================================
--- trunk/bibdesk/BibDocument.m 2011-09-06 06:35:48 UTC (rev 18107)
+++ trunk/bibdesk/BibDocument.m 2011-09-06 22:23:09 UTC (rev 18108)
@@ -1449,6 +1449,7 @@
NSData *pubData;
NSError *error = nil;
BOOL isOK = YES;
+ BOOL hasData = NO;
BOOL shouldAppendFrontMatter = YES;
NSStringEncoding encoding = [self encodingForSaving];
@@ -1493,6 +1494,7 @@
// only append this if it wasn't redundant (this assumes that the original
frontmatter is either a subset of the necessary frontmatter, or that the user's
preferences should override in case of a conflict)
if(isOK && shouldAppendFrontMatter){
+ hasData = YES;
isOK = [outputData appendDataFromString:frontMatter encoding:encoding
error:&error];
if(NO == isOK)
[error setValue:NSLocalizedString(@"Unable to convert file
header.", @"string encoding error context")
forKey:NSLocalizedRecoverySuggestionErrorKey];
@@ -1500,6 +1502,7 @@
}
if(isOK && [documentInfo count]){
+ hasData = YES;
isOK = [outputData appendDataFromString:[self documentInfoString]
encoding:encoding error:&error];
if(NO == isOK)
[error setValue:NSLocalizedString(@"Unable to convert document
info.", @"string encoding error context")
forKey:NSLocalizedRecoverySuggestionErrorKey];
@@ -1507,26 +1510,35 @@
// output the document's macros:
if(isOK){
- isOK = [outputData appendDataFromString:[[self macroResolver]
bibTeXString] encoding:encoding error:&error];
- if(NO == isOK)
- [error setValue:NSLocalizedString(@"Unable to convert macros.",
@"string encoding error context") forKey:NSLocalizedRecoverySuggestionErrorKey];
+ NSString *macroString = [[self macroResolver] bibTeXString];
+ if ([macroString length] > 0) {
+ hasData = YES;
+ isOK = [outputData appendDataFromString:macroString
encoding:encoding error:&error];
+ if(NO == isOK)
+ [error setValue:NSLocalizedString(@"Unable to convert
macros.", @"string encoding error context")
forKey:NSLocalizedRecoverySuggestionErrorKey];
+ }
}
// output the bibs
- for (BibItem *pub in [self publicationsForSaving]){
- if (isOK == NO) break;
- pubData = [pub bibTeXDataWithOptions:options relativeToPath:basePath
encoding:encoding error:&error];
- if(isOK = pubData != nil){
- [outputData appendData:doubleNewlineData];
- [outputData appendData:pubData];
- }else if([error valueForKey:NSLocalizedRecoverySuggestionErrorKey] ==
nil)
- [error setValue:[NSString
stringWithFormat:NSLocalizedString(@"Unable to convert item with cite key %@.",
@"string encoding error context"), [pub citeKey]]
forKey:NSLocalizedRecoverySuggestionErrorKey];
+ NSArray *pubs = [self publicationsForSaving];
+ if ([pubs count] > 0) {
+ hasData = YES;
+ for (BibItem *pub in [self publicationsForSaving]){
+ if (isOK == NO) break;
+ pubData = [pub bibTeXDataWithOptions:options
relativeToPath:basePath encoding:encoding error:&error];
+ if(isOK = pubData != nil){
+ [outputData appendData:doubleNewlineData];
+ [outputData appendData:pubData];
+ }else if([error valueForKey:NSLocalizedRecoverySuggestionErrorKey]
== nil)
+ [error setValue:[NSString
stringWithFormat:NSLocalizedString(@"Unable to convert item with cite key %@.",
@"string encoding error context"), [pub citeKey]]
forKey:NSLocalizedRecoverySuggestionErrorKey];
+ }
}
if (drop == NO) {
// The data from groups is always UTF-8, and we shouldn't convert it
unless we have an unparseable encoding; the comment key strings should be
representable in any encoding
if(isOK && ([[groups staticGroups] count] > 0)){
+ hasData = YES;
isOK = [outputData appendDataFromString:@"\n\n@comment{BibDesk
Static Groups{\n" encoding:encoding error:&error] &&
[outputData appendStringData:[groups
serializedGroupsDataOfType:BDSKStaticGroupType]
convertedFromUTF8ToEncoding:groupsEncoding error:&error] &&
[outputData appendDataFromString:@"}}" encoding:encoding
error:&error];
@@ -1534,12 +1546,14 @@
[error setValue:NSLocalizedString(@"Unable to convert static
groups.", @"string encoding error context")
forKey:NSLocalizedRecoverySuggestionErrorKey];
}
if(isOK && ([[groups smartGroups] count] > 0)){
+ hasData = YES;
isOK = [outputData appendDataFromString:@"\n\n@comment{BibDesk
Smart Groups{\n" encoding:encoding error:&error] &&
[outputData appendStringData:[groups
serializedGroupsDataOfType:BDSKSmartGroupType]
convertedFromUTF8ToEncoding:groupsEncoding error:&error] &&
[outputData appendDataFromString:@"}}" encoding:encoding
error:&error];
[error setValue:NSLocalizedString(@"Unable to convert smart
groups.", @"string encoding error context")
forKey:NSLocalizedRecoverySuggestionErrorKey];
}
if(isOK && ([[groups URLGroups] count] > 0)){
+ hasData = YES;
isOK = [outputData appendDataFromString:@"\n\n@comment{BibDesk URL
Groups{\n" encoding:encoding error:&error] &&
[outputData appendStringData:[groups
serializedGroupsDataOfType:BDSKURLGroupType]
convertedFromUTF8ToEncoding:groupsEncoding error:&error] &&
[outputData appendDataFromString:@"}}" encoding:encoding
error:&error];
@@ -1547,6 +1561,7 @@
[error setValue:NSLocalizedString(@"Unable to convert external
file groups.", @"string encoding error context")
forKey:NSLocalizedRecoverySuggestionErrorKey];
}
if(isOK && ([[groups scriptGroups] count] > 0)){
+ hasData = YES;
isOK = [outputData appendDataFromString:@"\n\n@comment{BibDesk
Script Groups{\n" encoding:encoding error:&error] &&
[outputData appendStringData:[groups
serializedGroupsDataOfType:BDSKScriptGroupType]
convertedFromUTF8ToEncoding:groupsEncoding error:&error] &&
[outputData appendDataFromString:@"}}" encoding:encoding
error:&error];
@@ -1555,7 +1570,9 @@
}
}
- if(isOK)
+ if (hasData == NO)
+ [outputData setLength:0];
+ else if(isOK)
[outputData appendDataFromString:@"\n" encoding:encoding error:&error];
if (NO == isOK && outError != NULL) *outError = error;
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Malware Security Report: Protecting Your Business, Customers, and the
Bottom Line. Protect your business and customers by understanding the
threat from malware and how it can impact your online business.
http://www.accelacomm.com/jaw/sfnl/114/51427462/
_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit