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