Add methods to consume given strings at the current location in Input Stream Reader

This commit is contained in:
iska
2014-10-04 21:54:15 +02:00
parent bfd9c9df97
commit adabe9c3f3
2 changed files with 28 additions and 0 deletions
+2
View File
@@ -29,6 +29,8 @@
- (BOOL)consumeCharacter:(UTF32Char)character;
- (BOOL)consumeUnsignedInt:(unsigned int *)result;
- (BOOL)consumeHexInt:(unsigned int *)result;
- (BOOL)consumeString:(NSString *)string caseSensitive:(BOOL)caseSensitive;
- (NSString *)consumeCharactersUpToCharactersInString:(NSString *)characters;
- (void)markCurrentLocation;
- (void)rewindToMarkedLocation;
+26
View File
@@ -137,6 +137,32 @@
return success;
}
- (BOOL)consumeString:(NSString *)string caseSensitive:(BOOL)caseSensitive
{
_scanner.caseSensitive = caseSensitive;
BOOL success = [_scanner scanString:string intoString:nil];
_location = _scanner.scanLocation;
return success;
}
- (NSString *)consumeCharactersUpToCharactersInString:(NSString *)characters
{
NSCharacterSet *set = [NSCharacterSet characterSetWithCharactersInString:characters];
NSMutableString *consumed = [NSMutableString string];
while (YES) {
UTF32Char nextCharacter = [self consumeNextInputCharacter];
if ([set longCharacterIsMember:nextCharacter] || nextCharacter == EOF) {
break;
}
[consumed appendString:StringFromUTF32Char(nextCharacter)];
}
[self unconsumeCurrentInputCharacter];
return consumed.length > 0 ? consumed : nil;
}
- (void)unconsumeCurrentInputCharacter
{
_location -= _consume;