Revision: 5045
          http://skim-app.svn.sourceforge.net/skim-app/?rev=5045&view=rev
Author:   hofman
Date:     2008-12-10 19:01:36 +0000 (Wed, 10 Dec 2008)

Log Message:
-----------
improve template parsing

Modified Paths:
--------------
    trunk/SKTemplateParser.m

Modified: trunk/SKTemplateParser.m
===================================================================
--- trunk/SKTemplateParser.m    2008-12-10 18:17:47 UTC (rev 5044)
+++ trunk/SKTemplateParser.m    2008-12-10 19:01:36 UTC (rev 5045)
@@ -269,7 +269,7 @@
     
     while (![scanner isAtEnd]) {
         NSString *beforeText = nil;
-        NSString *tag = nil;
+        NSString *tag = @"";
         int start;
                 
         if ([scanner scanUpToString:START_TAG_OPEN_DELIM 
intoString:&beforeText]) {
@@ -288,8 +288,7 @@
             
             // scan the key, must be letters and dots. We don't allow extra 
spaces
             // scanUpToCharactersFromSet is used for efficiency instead of 
scanCharactersFromSet
-            if ([scanner scanUpToCharactersFromSet:invertedKeyCharacterSet 
intoString:&tag] == NO)
-                tag = @"";
+            [scanner scanUpToCharactersFromSet:invertedKeyCharacterSet 
intoString:&tag];
             
             if ([scanner scanString:VALUE_TAG_CLOSE_DELIM intoString:nil]) {
                 
@@ -300,13 +299,14 @@
                 
             } else if ([scanner scanString:COLLECTION_TAG_CLOSE_DELIM 
intoString:nil]) {
                 
-                NSString *itemTemplate = nil, *separatorTemplate = nil;
+                NSString *itemTemplate = @"", *separatorTemplate = nil;
                 NSString *endTag;
                 NSRange sepTagRange;
                 
                 // collection template tag
                 endTag = endCollectionTagWithTag(tag);
-                if ([scanner scanString:endTag intoString:nil] == NO && 
[scanner scanUpToString:endTag intoString:&itemTemplate] && [scanner 
scanString:endTag intoString:nil]) {
+                [scanner scanUpToString:endTag intoString:&itemTemplate];
+                if ([scanner scanString:endTag intoString:nil]) {
                     sepTagRange = [itemTemplate 
rangeOfString:sepCollectionTagWithTag(tag)];
                     if (sepTagRange.location != NSNotFound) {
                         separatorTemplate = [itemTemplate 
substringFromIndex:NSMaxRange(sepTagRange)];
@@ -320,47 +320,44 @@
                 
             } else {
                 
-                NSString *matchString = nil;
+                NSString *matchString = @"";
                 SKTemplateTagMatchType matchType = SKTemplateTagMatchOther;
                 
                 if ([scanner scanString:CONDITION_TAG_EQUAL intoString:nil]) {
-                    if ([scanner scanUpToString:CONDITION_TAG_CLOSE_DELIM 
intoString:&matchString] == NO)
-                        matchString = @"";
+                    [scanner scanUpToString:CONDITION_TAG_CLOSE_DELIM 
intoString:&matchString];
                     matchType = SKTemplateTagMatchEqual;
                 } else if ([scanner scanString:CONDITION_TAG_CONTAIN 
intoString:nil]) {
-                    if ([scanner scanUpToString:CONDITION_TAG_CLOSE_DELIM 
intoString:&matchString] == NO)
-                        matchString = @"";
+                    [scanner scanUpToString:CONDITION_TAG_CLOSE_DELIM 
intoString:&matchString];
                     matchType = SKTemplateTagMatchContain;
                 } else if ([scanner scanString:CONDITION_TAG_SMALLER_OR_EQUAL 
intoString:nil]) {
-                    if ([scanner scanUpToString:CONDITION_TAG_CLOSE_DELIM 
intoString:&matchString] == NO)
-                        matchString = @"";
+                    [scanner scanUpToString:CONDITION_TAG_CLOSE_DELIM 
intoString:&matchString];
                     matchType = SKTemplateTagMatchSmallerOrEqual;
                 } else if ([scanner scanString:CONDITION_TAG_SMALLER 
intoString:nil]) {
-                    if ([scanner scanUpToString:CONDITION_TAG_CLOSE_DELIM 
intoString:&matchString] == NO)
-                        matchString = @"";
+                    [scanner scanUpToString:CONDITION_TAG_CLOSE_DELIM 
intoString:&matchString];
                     matchType = SKTemplateTagMatchSmaller;
                 }
                 
                 if ([scanner scanString:CONDITION_TAG_CLOSE_DELIM 
intoString:nil]) {
                     
                     NSMutableArray *subTemplates, *matchStrings;
-                    NSString *subTemplate = nil;
+                    NSString *subTemplate = @"";
                     NSString *endTag, *altTag;
                     NSRange altTagRange;
                     
                     // condition template tag
                     endTag = endConditionTagWithTag(tag);
-                    if ([scanner scanString:endTag intoString:nil] == NO && 
[scanner scanUpToString:endTag intoString:&subTemplate] && [scanner 
scanString:endTag intoString:nil]) {
+                    [scanner scanUpToString:endTag intoString:&subTemplate];
+                    if ([scanner scanString:endTag intoString:nil]) {
                         
                         subTemplates = [[NSMutableArray alloc] init];
-                        matchStrings = [[NSMutableArray alloc] 
initWithObjects:matchString ?: @"", nil];
+                        matchStrings = [[NSMutableArray alloc] 
initWithObjects:matchString, nil];
                         
                         if (matchType != SKTemplateTagMatchOther) {
                             altTag = compareConditionTagWithTag(tag, 
matchType);
                             altTagRange = altConditionTagRange(subTemplate, 
altTag, &matchString);
                             while (altTagRange.location != NSNotFound) {
                                 [subTemplates addObject:[subTemplate 
substringToIndex:altTagRange.location]];
-                                [matchStrings addObject:matchString ?: @""];
+                                [matchStrings addObject:matchString];
                                 subTemplate = [subTemplate 
substringFromIndex:NSMaxRange(altTagRange)];
                                 altTagRange = 
altConditionTagRange(subTemplate, altTag, &matchString);
                             }
@@ -519,7 +516,7 @@
     
     while (![scanner isAtEnd]) {
         NSString *beforeText = nil;
-        NSString *tag = nil;
+        NSString *tag = @"";
         int start;
         NSDictionary *attr = nil;
         
@@ -542,8 +539,7 @@
             
             // scan the key, must be letters and dots. We don't allow extra 
spaces
             // scanUpToCharactersFromSet is used for efficiency instead of 
scanCharactersFromSet
-            if ([scanner scanUpToCharactersFromSet:invertedKeyCharacterSet 
intoString:&tag] == NO)
-                tag = @"";
+            [scanner scanUpToCharactersFromSet:invertedKeyCharacterSet 
intoString:&tag];
 
             if ([scanner scanString:VALUE_TAG_CLOSE_DELIM intoString:nil]) {
                 
@@ -554,7 +550,7 @@
                 
             } else if ([scanner scanString:COLLECTION_TAG_CLOSE_DELIM 
intoString:nil]) {
                 
-                NSString *itemTemplateString = nil;
+                NSString *itemTemplateString = @"";
                 NSAttributedString *itemTemplate = nil, *separatorTemplate = 
nil;
                 NSString *endTag;
                 NSRange sepTagRange;
@@ -564,7 +560,8 @@
                 if ([scanner scanString:endTag intoString:nil])
                     continue;
                 start = [scanner scanLocation];
-                if ([scanner scanUpToString:endTag 
intoString:&itemTemplateString] && [scanner scanString:endTag intoString:nil]) {
+                [scanner scanUpToString:endTag intoString:&itemTemplateString];
+                if ([scanner scanString:endTag intoString:nil]) {
                     // ignore whitespace before the tag. Should we also remove 
a newline?
                     itemTemplate = [template 
attributedSubstringFromRange:NSMakeRange(start, [itemTemplateString length])];
                     
@@ -582,24 +579,20 @@
                 
             } else {
                 
-                NSString *matchString = nil;
+                NSString *matchString = @"";
                 SKTemplateTagMatchType matchType = SKTemplateTagMatchOther;
                 
                 if ([scanner scanString:CONDITION_TAG_EQUAL intoString:nil]) {
-                    if ([scanner scanUpToString:CONDITION_TAG_CLOSE_DELIM 
intoString:&matchString] == NO)
-                        matchString = @"";
+                    [scanner scanUpToString:CONDITION_TAG_CLOSE_DELIM 
intoString:&matchString];
                     matchType = SKTemplateTagMatchEqual;
                 } else if ([scanner scanString:CONDITION_TAG_CONTAIN 
intoString:nil]) {
-                    if ([scanner scanUpToString:CONDITION_TAG_CLOSE_DELIM 
intoString:&matchString] == NO)
-                        matchString = @"";
+                    [scanner scanUpToString:CONDITION_TAG_CLOSE_DELIM 
intoString:&matchString];
                     matchType = SKTemplateTagMatchContain;
                 } else if ([scanner scanString:CONDITION_TAG_SMALLER_OR_EQUAL 
intoString:nil]) {
-                    if ([scanner scanUpToString:CONDITION_TAG_CLOSE_DELIM 
intoString:&matchString] == NO)
-                        matchString = @"";
+                    [scanner scanUpToString:CONDITION_TAG_CLOSE_DELIM 
intoString:&matchString];
                     matchType = SKTemplateTagMatchSmallerOrEqual;
                 } else if ([scanner scanString:CONDITION_TAG_SMALLER 
intoString:nil]) {
-                    if ([scanner scanUpToString:CONDITION_TAG_CLOSE_DELIM 
intoString:&matchString] == NO)
-                        matchString = @"";
+                    [scanner scanUpToString:CONDITION_TAG_CLOSE_DELIM 
intoString:&matchString];
                     matchType = SKTemplateTagMatchSmaller;
                 }
                 
@@ -614,21 +607,20 @@
                     // condition template tag
                     endTag = endConditionTagWithTag(tag);
                     altTag = altConditionTagWithTag(tag);
-                    if ([scanner scanString:endTag intoString:nil])
-                        continue;
                     start = [scanner scanLocation];
-                    if ([scanner scanUpToString:endTag 
intoString:&subTemplateString] && [scanner scanString:endTag intoString:nil]) {
+                    [scanner scanUpToString:endTag 
intoString:&subTemplateString];
+                    if ([scanner scanString:endTag intoString:nil]) {
                         subTemplate = [template 
attributedSubstringFromRange:NSMakeRange(start, [subTemplateString length])];
                         
                         subTemplates = [[NSMutableArray alloc] init];
-                        matchStrings = [[NSMutableArray alloc] 
initWithObjects:matchString ?: @"", nil];
+                        matchStrings = [[NSMutableArray alloc] 
initWithObjects:matchString, nil];
                         
                         if (matchType != SKTemplateTagMatchOther) {
                             altTag = compareConditionTagWithTag(tag, 
matchType);
                             altTagRange = altConditionTagRange([subTemplate 
string], altTag, &matchString);
                             while (altTagRange.location != NSNotFound) {
                                 [subTemplates addObject:[subTemplate 
attributedSubstringFromRange:NSMakeRange(0, altTagRange.location)]];
-                                [matchStrings addObject:matchString ?: @""];
+                                [matchStrings addObject:matchString];
                                 subTemplate = [subTemplate 
attributedSubstringFromRange:NSMakeRange(NSMaxRange(altTagRange), [subTemplate 
length] - NSMaxRange(altTagRange))];
                                 altTagRange = 
altConditionTagRange([subTemplate string], altTag, &matchString);
                             }


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
SF.Net email is Sponsored by MIX09, March 18-20, 2009 in Las Vegas, Nevada.
The future of the web can't happen without you.  Join us at MIX09 to help
pave the way to the Next Web now. Learn more and register at
http://ad.doubleclick.net/clk;208669438;13503038;i?http://2009.visitmix.com/
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to