Skip to content

Commit

Permalink
Extract some methods for clarity
Browse files Browse the repository at this point in the history
  • Loading branch information
stig committed Jun 11, 2011
1 parent 084ed4d commit 36b738f
Showing 1 changed file with 25 additions and 14 deletions.
39 changes: 25 additions & 14 deletions Classes/SBJsonStreamParser.m
Expand Up @@ -134,6 +134,13 @@ - (void)handleObjectStart {
self.state = [SBJsonStreamParserStateObjectStart sharedInstance];
}

- (void)handleObjectEnd: (sbjson_token_t) tok {
self.state = [stateStack lastObject];
[stateStack removeLastObject];
[state parser:self shouldTransitionTo:tok];
[delegate parserFoundObjectEnd:self];
}

- (void)handleArrayStart {
if (stateStack.count >= maxDepth) {
[self maxDepthError];
Expand All @@ -145,10 +152,24 @@ - (void)handleArrayStart {
self.state = [SBJsonStreamParserStateArrayStart sharedInstance];
}

- (void)handleArrayEnd: (sbjson_token_t) tok {
self.state = [stateStack lastObject];
[stateStack removeLastObject];
[state parser:self shouldTransitionTo:tok];
[delegate parserFoundArrayEnd:self];
}

- (void) handleTokenNotExpectedHere: (sbjson_token_t) tok {
NSString *tokenName = [self tokenName:tok];
NSString *stateName = [state name];

self.error = [NSString stringWithFormat:@"Token '%@' not expected %@", tokenName, stateName];
self.state = [SBJsonStreamParserStateError sharedInstance];
}

- (SBJsonStreamParserStatus)parse:(NSData *)data_ {
[tokeniser appendData:data_];


for (;;) {

if ([state isKindOfClass:[SBJsonStreamParserStateError class]])
Expand All @@ -170,11 +191,7 @@ - (SBJsonStreamParserStatus)parse:(NSData *)data_ {
default:

if (![state parser:self shouldAcceptToken:tok]) {
NSString *tokenName = [self tokenName:tok];
NSString *stateName = [state name];

self.error = [NSString stringWithFormat:@"Token '%@' not expected %@", tokenName, stateName];
self.state = [SBJsonStreamParserStateError sharedInstance];
[self handleTokenNotExpectedHere: tok];
return SBJsonStreamParserError;
}

Expand All @@ -184,21 +201,15 @@ - (SBJsonStreamParserStatus)parse:(NSData *)data_ {
break;

case sbjson_token_object_end:
self.state = [stateStack lastObject];
[stateStack removeLastObject];
[state parser:self shouldTransitionTo:tok];
[delegate parserFoundObjectEnd:self];
[self handleObjectEnd: tok];
break;

case sbjson_token_array_start:
[self handleArrayStart];
break;

case sbjson_token_array_end:
self.state = [stateStack lastObject];
[stateStack removeLastObject];
[state parser:self shouldTransitionTo:tok];
[delegate parserFoundArrayEnd:self];
[self handleArrayEnd: tok];
break;

case sbjson_token_separator:
Expand Down

0 comments on commit 36b738f

Please sign in to comment.