Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
branch: master
Fetching contributors…

Octocat-spinner-32-eaf2f5

Cannot retrieve contributors at this time

file 58 lines (43 sloc) 1.005 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57

@import "TDToken.j"
@import "TDTokenizer.j"

@implementation TDTokenArraySource : CPObject
{
    TDTokenizer tokenizer;
    CPString delimiter;
    TDToken nextToken;
}

- (id)init
{
    return [self initWithTokenizer:nil delimiter:nil];
}

- (id)initWithTokenizer:(TDTokenizer)t delimiter:(CPString)s
{
    if (self = [super init]) {
        tokenizer = t;
        delimiter = s;
    }
    return self;
}

- (BOOL)hasMore
{
    if (!nextToken)
        nextToken = [tokenizer nextToken];

    return ([TDToken EOFToken] != nextToken);
}


- (CPArray)nextTokenArray
{
    if (![self hasMore])
        return nil;
    
    var res = [nextToken],
        eof = [TDToken EOFToken],
        tok = nil;

    nextToken = nil;

    while ((tok = [tokenizer nextToken]) != eof) {
        if ([tok.stringValue isEqualToString:delimiter])
            break; // discard delimiter tok

        [res addObject:tok];
    }
    
    //return [[res copy] autorelease];
    return res; // optimization
}

@end
Something went wrong with that request. Please try again.