Revision: 22464
http://sourceforge.net/p/bibdesk/svn/22464
Author: hofman
Date: 2018-07-23 21:46:10 +0000 (Mon, 23 Jul 2018)
Log Message:
-----------
Scanning empty optional argument always returns the empty string
Modified Paths:
--------------
trunk/bibdesk/BDSKFormatParser.m
Modified: trunk/bibdesk/BDSKFormatParser.m
===================================================================
--- trunk/bibdesk/BDSKFormatParser.m 2018-07-23 20:46:22 UTC (rev 22463)
+++ trunk/bibdesk/BDSKFormatParser.m 2018-07-23 21:46:10 UTC (rev 22464)
@@ -74,7 +74,7 @@
static inline BOOL stringHasCharacterNotInRange(NSString *string, NSRange
range);
-static BOOL scanOptArg(NSScanner *scanner, NSString **result, NSString
*defaultResult);
+static BOOL scanOptArg(NSScanner *scanner, NSString **result);
static BOOL scanSignedDigit(NSScanner *scanner, NSUInteger *resultDigit, BOOL
*resultSign);
+ (void)initialize {
@@ -149,7 +149,7 @@
BOOL isLast = NO;
if (NO == [scanner isAtEnd]) {
// look for [separator] and
[etal]
- scanOptArg(scanner, &authSep, @"") &&
scanOptArg(scanner, &etal, @"");
+ scanOptArg(scanner, &authSep) && scanOptArg(scanner,
&etal);
// look for #names and #chars per name
if (scanSignedDigit(scanner, &numAuth, &isLast)) {
if (NO == [scanner scanUnsignedInteger:&numChars])
numChars = 0;
@@ -199,7 +199,7 @@
BOOL isLast = NO;
if (NO == [scanner isAtEnd]) {
// look for [author separator],
[name separator], and [etal]
- scanOptArg(scanner, &authSep, @"") &&
scanOptArg(scanner, &nameSep, @"") && scanOptArg(scanner, &etal, @"");
+ scanOptArg(scanner, &authSep) && scanOptArg(scanner,
&nameSep) && scanOptArg(scanner, &etal);
// look for #names
scanSignedDigit(scanner, &numAuth, &isLast);
}
@@ -267,7 +267,7 @@
NSUInteger smallWordLength = 3;
NSString *numString = nil;
NSString *title = [pub title];
- if (scanOptArg(scanner, &numString, @"0"))
+ if (scanOptArg(scanner, &numString))
smallWordLength = (NSUInteger)[numString integerValue];
if (NO == [scanner
scanUnsignedInteger:&numWords]) numWords = 0;
if ([NSString isEmptyString:title] ==
NO) {
@@ -355,7 +355,7 @@
NSString *slash = (isLocalFile) ? @"-"
: @"/";
NSString *sep = nil;
// look for [slash] and [sep]
- scanOptArg(scanner, &slash, @"") && scanOptArg(scanner,
&sep, @"");
+ scanOptArg(scanner, &slash) && scanOptArg(scanner, &sep);
NSString *keywordsString = [pub
stringValueOfField:BDSKKeywordsString];
NSUInteger i, numWords = 0;
if (NO == [scanner scanUnsignedInteger:&numWords])
numWords = 0;
@@ -446,7 +446,7 @@
{
// old file extension without period
NSString *defaultExt = @"";
- scanOptArg(scanner, &defaultExt, @"");
+ scanOptArg(scanner, &defaultExt);
NSString *filename = nil;
if (file)
filename = [[file URL] path];
@@ -484,7 +484,7 @@
[scanner scanUpToString:@"}"
intoString:&key] &&
[scanner scanString:@"}"
intoString:NULL]) {
// look for [slash]
- scanOptArg(scanner, &slash,
@"");
+ scanOptArg(scanner, &slash);
if (NO == [scanner
scanUnsignedInteger:&numChars]) numChars = 0;
if (NO == [fieldName
isEqualToString:BDSKCiteKeyString] &&
@@ -522,7 +522,9 @@
[scanner scanUpToString:@"}"
intoString:&key] &&
[scanner scanString:@"}"
intoString:NULL]) {
// look for [sep chars], [slash], and [sep]
- scanOptArg(scanner, &sepChars, @" ") &&
scanOptArg(scanner, &slash, @"") && scanOptArg(scanner, &sep, @"");
+ scanOptArg(scanner, &sepChars) && scanOptArg(scanner,
&slash) && scanOptArg(scanner, &sep);
+ if ([NSString isEmptyString:sepChars])
+ sepChars = @" ";
NSString *wordsString = [pub stringValueOfField:key];
NSUInteger i, numWords = 0;
if (NO == [scanner scanUnsignedInteger:&numWords])
numWords = 0;
@@ -594,7 +596,7 @@
[scanner scanUpToString:@"}"
intoString:&key] &&
[scanner scanString:@"}"
intoString:NULL]) {
// look for [yes value]m, [no
value], and [mixed value]
- scanOptArg(scanner, &yesValue, @"") &&
scanOptArg(scanner, &noValue, @"") && scanOptArg(scanner, &mixedValue, @"");
+ scanOptArg(scanner, &yesValue) && scanOptArg(scanner,
&noValue) && scanOptArg(scanner, &mixedValue);
if (NO == [scanner
scanUnsignedInteger:&numChars]) numChars = 0;
intValue = [pub integerValueOfField:key];
value = (intValue == 0 ? noValue : (intValue == 1 ?
yesValue : mixedValue));
@@ -693,7 +695,7 @@
uniqueSpecifier = specifier;
prefixStr = parsedStr;
parsedStr = [NSMutableString
string];
- scanOptArg(scanner, &uniqueSeparator, nil);
+ scanOptArg(scanner, &uniqueSeparator);
if (NO == [scanner
scanUnsignedInteger:&uniqueNumber]) uniqueNumber = 1;
}
else {
@@ -1173,7 +1175,7 @@
return NO;
}
-static BOOL scanOptArg(NSScanner *scanner, NSString **result, NSString
*defaultResult) {
+static BOOL scanOptArg(NSScanner *scanner, NSString **result) {
if ([scanner scanString:@"[" intoString:NULL] == NO)
return NO;
@@ -1193,7 +1195,7 @@
string = tmpString;
[scanner scanString:@"]" intoString:NULL];
if (result)
- *result = [string length] > 0 ? string : defaultResult;
+ *result = string ?: @"";
return YES;
}
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit