mirror of
https://github.com/MacPass/MacPass.git
synced 2025-12-14 05:52:58 +00:00
fixed missing offsets for special format where only upper or lower case characters are used
This commit is contained in:
@@ -172,9 +172,10 @@ typedef NSUInteger (^MPPickcharOffsetConverter)(NSInteger offset);
|
|||||||
if(optionPair.count != 2) {
|
if(optionPair.count != 2) {
|
||||||
return NO;
|
return NO;
|
||||||
}
|
}
|
||||||
NSString *key = [optionPair.firstObject stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
|
NSString *key = [optionPair.firstObject stringByTrimmingCharactersInSet:NSCharacterSet.whitespaceAndNewlineCharacterSet];
|
||||||
NSString *option = [optionPair.lastObject stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
|
NSString *option = [optionPair.lastObject stringByTrimmingCharactersInSet:NSCharacterSet.whitespaceAndNewlineCharacterSet];
|
||||||
|
|
||||||
|
/* Character count option */
|
||||||
if(NSOrderedSame == [key compare:kKPKPlaceholderPickCharsOptionCount options:NSCaseInsensitiveSearch]
|
if(NSOrderedSame == [key compare:kKPKPlaceholderPickCharsOptionCount options:NSCaseInsensitiveSearch]
|
||||||
|| NSOrderedSame == [key compare:kKPKPlaceholderPickCharsOptionCountShort options:NSCaseInsensitiveSearch]) {
|
|| NSOrderedSame == [key compare:kKPKPlaceholderPickCharsOptionCountShort options:NSCaseInsensitiveSearch]) {
|
||||||
NSScanner *scanner = [[NSScanner alloc] initWithString:option];
|
NSScanner *scanner = [[NSScanner alloc] initWithString:option];
|
||||||
@@ -187,9 +188,7 @@ typedef NSUInteger (^MPPickcharOffsetConverter)(NSInteger offset);
|
|||||||
}
|
}
|
||||||
return NO;
|
return NO;
|
||||||
}
|
}
|
||||||
/*
|
/* Hide characters option */
|
||||||
FOUNDATION_EXPORT NSString *const kKPKPlaceholderPickCharsOptionConvertFormat;
|
|
||||||
*/
|
|
||||||
if(NSOrderedSame == [key compare:kKPKPlaceholderPickCharsOptionHide options:NSCaseInsensitiveSearch]) {
|
if(NSOrderedSame == [key compare:kKPKPlaceholderPickCharsOptionHide options:NSCaseInsensitiveSearch]) {
|
||||||
if(NSOrderedSame == [option compare:@"false" options:NSCaseInsensitiveSearch]) {
|
if(NSOrderedSame == [option compare:@"false" options:NSCaseInsensitiveSearch]) {
|
||||||
self.hideCharacters = NO;
|
self.hideCharacters = NO;
|
||||||
@@ -201,6 +200,7 @@ typedef NSUInteger (^MPPickcharOffsetConverter)(NSInteger offset);
|
|||||||
}
|
}
|
||||||
return NO;
|
return NO;
|
||||||
}
|
}
|
||||||
|
/* Convert to down arrows option */
|
||||||
if(NSOrderedSame == [key compare:kKPKPlaceholderPickCharsOptionConvert options:NSCaseInsensitiveSearch]) {
|
if(NSOrderedSame == [key compare:kKPKPlaceholderPickCharsOptionConvert options:NSCaseInsensitiveSearch]) {
|
||||||
if(NSOrderedSame == [option compare:@"D" options:NSCaseInsensitiveSearch]) {
|
if(NSOrderedSame == [option compare:@"D" options:NSCaseInsensitiveSearch]) {
|
||||||
self.convertToDownArrows = YES;
|
self.convertToDownArrows = YES;
|
||||||
@@ -208,6 +208,7 @@ typedef NSUInteger (^MPPickcharOffsetConverter)(NSInteger offset);
|
|||||||
}
|
}
|
||||||
return NO;
|
return NO;
|
||||||
}
|
}
|
||||||
|
/* Offset option for down arrow conversion */
|
||||||
if(NSOrderedSame == [key compare:kKPKPlaceholderPickCharsOptionConvertOffset options:NSCaseInsensitiveSearch]) {
|
if(NSOrderedSame == [key compare:kKPKPlaceholderPickCharsOptionConvertOffset options:NSCaseInsensitiveSearch]) {
|
||||||
NSScanner *scanner = [[NSScanner alloc] initWithString:option];
|
NSScanner *scanner = [[NSScanner alloc] initWithString:option];
|
||||||
NSInteger offset;
|
NSInteger offset;
|
||||||
@@ -219,6 +220,7 @@ typedef NSUInteger (^MPPickcharOffsetConverter)(NSInteger offset);
|
|||||||
}
|
}
|
||||||
return NO;
|
return NO;
|
||||||
}
|
}
|
||||||
|
/* Special checkbox format option */
|
||||||
if(NSOrderedSame == [key compare:kKPKPlaceholderPickCharsOptionConvertFormat options:NSCaseInsensitiveSearch]) {
|
if(NSOrderedSame == [key compare:kKPKPlaceholderPickCharsOptionConvertFormat options:NSCaseInsensitiveSearch]) {
|
||||||
if(option.length == 0) {
|
if(option.length == 0) {
|
||||||
/* interpret no optoins as default too*/
|
/* interpret no optoins as default too*/
|
||||||
@@ -281,6 +283,17 @@ typedef NSUInteger (^MPPickcharOffsetConverter)(NSInteger offset);
|
|||||||
}
|
}
|
||||||
index++;
|
index++;
|
||||||
}
|
}
|
||||||
|
NSAssert(tmpOffsetMap.count > 0, @"Internal inconsistency. Offset format needs at least on valid format!");
|
||||||
|
/* default behaviour is to be case insesitive, make sure we use the same converter for both cases if only one is specifier */
|
||||||
|
MPPickcharOffsetConverter upperCaseConverter = tmpOffsetMap[@(MPPickCharOffsetTypeUpperCaseCharacter)];
|
||||||
|
MPPickcharOffsetConverter lowerCaseConverter = tmpOffsetMap[@(MPPickCharOffsetTypeLowerCaseCharacter)];
|
||||||
|
if(upperCaseConverter && !lowerCaseConverter) {
|
||||||
|
tmpOffsetMap[@(MPPickCharOffsetTypeLowerCaseCharacter)] = upperCaseConverter;
|
||||||
|
}
|
||||||
|
else if(!upperCaseConverter && lowerCaseConverter) {
|
||||||
|
tmpOffsetMap[@(MPPickCharOffsetTypeUpperCaseCharacter)] = lowerCaseConverter;
|
||||||
|
}
|
||||||
|
|
||||||
_offsetConverter = [tmpOffsetMap copy];
|
_offsetConverter = [tmpOffsetMap copy];
|
||||||
return YES;
|
return YES;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -30,7 +30,7 @@
|
|||||||
|
|
||||||
|
|
||||||
- (void)testInvalidOptionsParser {
|
- (void)testInvalidOptionsParser {
|
||||||
MPPickcharsParser *parser = [[MPPickcharsParser alloc] initWithOptions:@"Count=-10,Hide=whatever,Con=D,Conv-Offset=20,Conv-Fmt=0A"];
|
MPPickcharsParser *parser = [[MPPickcharsParser alloc] initWithOptions:@"Count=-10,Hide=whatever,Con=D,Conv-Offset=20,Conv-Fmt=1A"];
|
||||||
XCTAssertEqual(0, parser.pickCount); // negative count will result in 0-count
|
XCTAssertEqual(0, parser.pickCount); // negative count will result in 0-count
|
||||||
XCTAssertEqual(YES, parser.hideCharacters); // option invalid, default is YES
|
XCTAssertEqual(YES, parser.hideCharacters); // option invalid, default is YES
|
||||||
XCTAssertEqual(NO, parser.convertToDownArrows); // option was invalid, default is NO
|
XCTAssertEqual(NO, parser.convertToDownArrows); // option was invalid, default is NO
|
||||||
|
|||||||
Reference in New Issue
Block a user