Revision: 5041
http://skim-app.svn.sourceforge.net/skim-app/?rev=5041&view=rev
Author: hofman
Date: 2008-12-10 17:45:54 +0000 (Wed, 10 Dec 2008)
Log Message:
-----------
Simplify code to search for alternate template tags
Modified Paths:
--------------
trunk/SKTemplateParser.m
Modified: trunk/SKTemplateParser.m
===================================================================
--- trunk/SKTemplateParser.m 2008-12-10 17:16:07 UTC (rev 5040)
+++ trunk/SKTemplateParser.m 2008-12-10 17:45:54 UTC (rev 5041)
@@ -185,16 +185,16 @@
return altTag;
}
-static inline NSRange altTemplateTagRange(NSString *template, NSString
*altTag, NSString *endDelim, NSString **argString) {
+static inline NSRange altConditionTagRange(NSString *template, NSString
*altTag, NSString **argString) {
NSRange altTagRange = [template rangeOfString:altTag];
- if (altTagRange.location != NSNotFound && nil != endDelim) {
+ if (altTagRange.location != NSNotFound) {
// find the end tag and the argument (match string)
- NSRange endRange = [template rangeOfString:endDelim options:0
range:NSMakeRange(NSMaxRange(altTagRange), [template length] -
NSMaxRange(altTagRange))];
+ NSRange endRange = [template rangeOfString:CONDITION_TAG_CLOSE_DELIM
options:0 range:NSMakeRange(NSMaxRange(altTagRange), [template length] -
NSMaxRange(altTagRange))];
if (endRange.location != NSNotFound) {
*argString = [template
substringWithRange:NSMakeRange(NSMaxRange(altTagRange), endRange.location -
NSMaxRange(altTagRange))];
altTagRange.length = NSMaxRange(endRange) - altTagRange.location;
} else {
- *argString = @"";
+ altTagRange = NSMakeRange(NSNotFound, 0);
}
}
return altTagRange;
@@ -202,26 +202,8 @@
static inline NSRange rangeAfterRemovingEmptyLines(NSString *string,
SKTemplateTagType typeBefore, SKTemplateTagType typeAfter, BOOL isSubtemplate) {
NSRange range = NSMakeRange(0, [string length]);
- BOOL first = NO, last = NO;
- if (typeAfter == -1) {
- if (isSubtemplate) {
- typeAfter = SKCollectionTemplateTagType;
- } else {
- typeAfter = SKValueTemplateTagType;
- last = YES;
- }
- }
- if (typeBefore == -1) {
- if (isSubtemplate) {
- typeBefore = SKCollectionTemplateTagType;
- } else {
- typeBefore = SKValueTemplateTagType;
- first = YES;
- }
- }
-
- if (typeAfter == SKCollectionTemplateTagType || typeAfter ==
SKConditionTemplateTagType) {
+ if (typeAfter == SKCollectionTemplateTagType || typeAfter ==
SKConditionTemplateTagType || (isSubtemplate && typeAfter == -1)) {
// remove whitespace at the end, just before the collection or
condition tag
NSRange lastCharRange = [string
rangeOfCharacterFromSet:[NSCharacterSet nonWhitespaceCharacterSet]
options:NSBackwardsSearch range:range];
if (lastCharRange.location != NSNotFound) {
@@ -229,11 +211,11 @@
unsigned int rangeEnd = NSMaxRange(lastCharRange);
if ([[NSCharacterSet newlineCharacterSet]
characterIsMember:lastChar])
range.length = rangeEnd;
- } else if (first) {
+ } else if (typeBefore == -1) {
range.length = 0;
}
}
- if (typeBefore == SKCollectionTemplateTagType || typeAfter ==
SKConditionTemplateTagType) {
+ if (typeBefore == SKCollectionTemplateTagType || typeBefore ==
SKConditionTemplateTagType || (isSubtemplate && typeBefore == -1)) {
// remove whitespace and a newline at the start, just after the
collection or condition tag
NSRange firstCharRange = [string
rangeOfCharacterFromSet:[NSCharacterSet nonWhitespaceCharacterSet] options:0
range:range];
if (firstCharRange.location != NSNotFound) {
@@ -245,7 +227,7 @@
else
range = NSMakeRange(rangeEnd, NSMaxRange(range) -
rangeEnd);
}
- } else if (last) {
+ } else if (typeAfter == -1) {
range.length = 0;
}
}
@@ -310,7 +292,7 @@
// collection template tag
endTag = endCollectionTagWithTag(tag);
if ([scanner scanString:endTag intoString:nil] == NO &&
[scanner scanUpToString:endTag intoString:&itemTemplate] && [scanner
scanString:endTag intoString:nil]) {
- sepTagRange = altTemplateTagRange(itemTemplate,
sepCollectionTagWithTag(tag), nil, NULL);
+ sepTagRange = [itemTemplate
rangeOfString:sepCollectionTagWithTag(tag)];
if (sepTagRange.location != NSNotFound) {
separatorTemplate = [itemTemplate
substringFromIndex:NSMaxRange(sepTagRange)];
itemTemplate = [itemTemplate
substringToIndex:sepTagRange.location];
@@ -360,16 +342,16 @@
if (matchType != SKTemplateTagMatchOther) {
altTag = compareConditionTagWithTag(tag,
matchType);
- altTagRange = altTemplateTagRange(subTemplate,
altTag, CONDITION_TAG_CLOSE_DELIM, &matchString);
+ altTagRange = altConditionTagRange(subTemplate,
altTag, &matchString);
while (altTagRange.location != NSNotFound) {
[subTemplates addObject:[subTemplate
substringToIndex:altTagRange.location]];
[matchStrings addObject:matchString ?: @""];
subTemplate = [subTemplate
substringFromIndex:NSMaxRange(altTagRange)];
- altTagRange = altTemplateTagRange(subTemplate,
altTag, CONDITION_TAG_CLOSE_DELIM, &matchString);
+ altTagRange =
altConditionTagRange(subTemplate, altTag, &matchString);
}
}
- altTagRange = altTemplateTagRange(subTemplate,
altConditionTagWithTag(tag), nil, NULL);
+ altTagRange = [subTemplate
rangeOfString:altConditionTagWithTag(tag)];
if (altTagRange.location != NSNotFound) {
[subTemplates addObject:[subTemplate
substringToIndex:altTagRange.location]];
subTemplate = [subTemplate
substringFromIndex:NSMaxRange(altTagRange)];
@@ -591,7 +573,7 @@
// ignore whitespace before the tag. Should we also remove
a newline?
itemTemplate = [template
attributedSubstringFromRange:NSMakeRange(start, [itemTemplateString length])];
- sepTagRange = altTemplateTagRange([itemTemplate string],
sepCollectionTagWithTag(tag), nil, NULL);
+ sepTagRange = [[itemTemplate string]
rangeOfString:sepCollectionTagWithTag(tag)];
if (sepTagRange.location != NSNotFound) {
separatorTemplate = [itemTemplate
attributedSubstringFromRange:NSMakeRange(NSMaxRange(sepTagRange), [itemTemplate
length] - NSMaxRange(sepTagRange))];
itemTemplate = [itemTemplate
attributedSubstringFromRange:NSMakeRange(0, sepTagRange.location)];
@@ -648,16 +630,16 @@
if (matchType != SKTemplateTagMatchOther) {
altTag = compareConditionTagWithTag(tag,
matchType);
- altTagRange = altTemplateTagRange([subTemplate
string], altTag, CONDITION_TAG_CLOSE_DELIM, &matchString);
+ altTagRange = altConditionTagRange([subTemplate
string], altTag, &matchString);
while (altTagRange.location != NSNotFound) {
[subTemplates addObject:[subTemplate
attributedSubstringFromRange:NSMakeRange(0, altTagRange.location)]];
[matchStrings addObject:matchString ?: @""];
subTemplate = [subTemplate
attributedSubstringFromRange:NSMakeRange(NSMaxRange(altTagRange), [subTemplate
length] - NSMaxRange(altTagRange))];
- altTagRange = altTemplateTagRange([subTemplate
string], altTag, CONDITION_TAG_CLOSE_DELIM, &matchString);
+ altTagRange =
altConditionTagRange([subTemplate string], altTag, &matchString);
}
}
- altTagRange = altTemplateTagRange([subTemplate
string], altConditionTagWithTag(tag), nil, NULL);
+ altTagRange = [[subTemplate string]
rangeOfString:altConditionTagWithTag(tag)];
if (altTagRange.location != NSNotFound) {
[subTemplates addObject:[subTemplate
attributedSubstringFromRange:NSMakeRange(0, altTagRange.location)]];
subTemplate = [subTemplate
attributedSubstringFromRange:NSMakeRange(NSMaxRange(altTagRange), [subTemplate
length] - NSMaxRange(altTagRange))];
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