From 1896bc58dbf72e9dc44426e06c1012b7b3a7b382 Mon Sep 17 00:00:00 2001 From: August Mueller Date: Sun, 23 Oct 2011 14:48:56 -0700 Subject: [PATCH] More preprocessor additions / fixes. --- experimental/src/JSTPreprocessor.m | 33 ++++++++----------- experimental/src/jstalkmain.m | 4 +-- .../tests/preprocess/testPreprocess01.jstpc | 2 +- .../tests/preprocess/testPreprocess02.jstalk | 13 +++++++- .../tests/preprocess/testPreprocess02.jstpc | 12 +++++++ 5 files changed, 40 insertions(+), 24 deletions(-) diff --git a/experimental/src/JSTPreprocessor.m b/experimental/src/JSTPreprocessor.m index 319694f..a93be75 100644 --- a/experimental/src/JSTPreprocessor.m +++ b/experimental/src/JSTPreprocessor.m @@ -357,6 +357,8 @@ - (NSString*)description { [msgSendArgs removeAllObjects]; } + BOOL pastSelector = NO; + NSMutableString *buf = [NSMutableString stringWithString:@"jst_msgSend("]; [buf appendFormat:@"%@, \"%@\"", target, selector]; @@ -365,29 +367,20 @@ - (NSString*)description { id arg = [msgSendArgs objectAtIndex:i]; - if ([arg isKindOfClass:[TDToken class]] && ([arg isComment] || [arg isWhitespace])) { - /* - if ([arg isComment]) { - [buf appendString:[arg stringValue]]; - } - */ - } - else { + if ([arg isKindOfClass:[TDToken class]] && [[arg stringValue] isEqualToString:@","]) { - if ([arg isKindOfClass:[TDToken class]] && [[arg stringValue] isEqualToString:@","]) { - - if (![selector length]) { // looks like it's an array: print([3+4, 5]); - return [NSString stringWithFormat:@"[%@]", [argsCopy componentsJoinedByString:@""]]; - } - } - - if (arg == selectorWasHere) { - [buf appendString:@", "]; - } - else { - [buf appendString:[arg description]]; + if (![selector length]) { // looks like it's an array: print([3+4, 5]); + return [NSString stringWithFormat:@"[%@]", [argsCopy componentsJoinedByString:@""]]; } } + + if (arg == selectorWasHere) { + [buf appendString:@", "]; + pastSelector = YES; + } + else if (pastSelector) { + [buf appendString:[arg description]]; + } } [buf appendString:@")"]; diff --git a/experimental/src/jstalkmain.m b/experimental/src/jstalkmain.m index 0608bac..e2f2a44 100644 --- a/experimental/src/jstalkmain.m +++ b/experimental/src/jstalkmain.m @@ -114,8 +114,8 @@ void testPreprocessAtPath(NSString *pathToScript) { NSString *r = [JSTPreprocessor preprocessCode:a]; - b = [b stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; - r = [r stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; + b = [[b stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] stringByAppendingString:@"\n"]; + r = [[r stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] stringByAppendingString:@"\n"]; if (![b isEqualToString:r]) { NSLog(@"Bad preprocess for %@", pathToScript); diff --git a/experimental/tests/preprocess/testPreprocess01.jstpc b/experimental/tests/preprocess/testPreprocess01.jstpc index d326264..133c2e6 100644 --- a/experimental/tests/preprocess/testPreprocess01.jstpc +++ b/experimental/tests/preprocess/testPreprocess01.jstpc @@ -6,4 +6,4 @@ jst_msgSend(NSFullUserName(), "lowercaseString"); print(jst_msgSend(NSString, "stringWithString:", JSTNSString("a")+"b")) -jst_msgSend(fo, "doSomething:in:", " a "+jst_msgSend(b, "fun")+" c ", null); +jst_msgSend(fo, "doSomething:in:", " a " + jst_msgSend(b, "fun") + " c " , null); diff --git a/experimental/tests/preprocess/testPreprocess02.jstalk b/experimental/tests/preprocess/testPreprocess02.jstalk index ff4e248..b715443 100644 --- a/experimental/tests/preprocess/testPreprocess02.jstalk +++ b/experimental/tests/preprocess/testPreprocess02.jstalk @@ -1,3 +1,14 @@ print([4 - 5, b]); print([a, b]); -[NSString string]; \ No newline at end of file +[NSString string]; + +{ + var s = @"Hello"; + + var f = someFunction([s lowerCaseString], @"Hi"); +} + +var s = [NSString stringWithFormat:"%@, %@, %@" + newlineVar, /*inline comment*/, fakeVar + "test another newline" + ]; diff --git a/experimental/tests/preprocess/testPreprocess02.jstpc b/experimental/tests/preprocess/testPreprocess02.jstpc index e1459ff..85e01ab 100644 --- a/experimental/tests/preprocess/testPreprocess02.jstpc +++ b/experimental/tests/preprocess/testPreprocess02.jstpc @@ -1,3 +1,15 @@ print([4 - 5, b]); print([a, b]); jst_msgSend(NSString, "string"); + +{ + var s = JSTNSString("Hello"); + + var f = someFunction(jst_msgSend(s, "lowerCaseString"), JSTNSString("Hi")); +} + +var s = jst_msgSend(NSString, "stringWithFormat:", "%@, %@, %@" + newlineVar, /*inline comment*/, fakeVar + "test another newline" + ); + \ No newline at end of file