Revision: 3056
http://skim-app.svn.sourceforge.net/skim-app/?rev=3056&view=rev
Author: hofman
Date: 2007-10-22 05:24:58 -0700 (Mon, 22 Oct 2007)
Log Message:
-----------
Slight rewrite of methods to remove empty lines around template tags.
Modified Paths:
--------------
trunk/NSString_SKExtensions.h
trunk/NSString_SKExtensions.m
trunk/SKTemplateParser.m
Modified: trunk/NSString_SKExtensions.h
===================================================================
--- trunk/NSString_SKExtensions.h 2007-10-21 22:08:57 UTC (rev 3055)
+++ trunk/NSString_SKExtensions.h 2007-10-22 12:24:58 UTC (rev 3056)
@@ -56,13 +56,13 @@
- (NSString *)stringByEscapingParenthesis;
- (NSRange)rangeOfLeadingEmptyLine;
-- (NSRange)rangeOfLeadingEmptyLine:(BOOL *)onlyWhite;
+- (NSRange)rangeOfLeadingEmptyLineRequiringNewline:(BOOL)requireNL;
- (NSRange)rangeOfLeadingEmptyLineInRange:(NSRange)range;
-- (NSRange)rangeOfLeadingEmptyLine:(BOOL *)onlyWhite range:(NSRange)range;
+- (NSRange)rangeOfLeadingEmptyLineRequiringNewline:(BOOL)requireNL
range:(NSRange)range;
- (NSRange)rangeOfTrailingEmptyLine;
-- (NSRange)rangeOfTrailingEmptyLine:(BOOL *)onlyWhite;
+- (NSRange)rangeOfTrailingEmptyLineRequiringNewline:(BOOL)requireNL;
- (NSRange)rangeOfTrailingEmptyLineInRange:(NSRange)range;
-- (NSRange)rangeOfTrailingEmptyLine:(BOOL *)onlyWhite range:(NSRange)range;
+- (NSRange)rangeOfTrailingEmptyLineRequiringNewline:(BOOL)requireNL
range:(NSRange)range;
- (NSString *)typeName;
Modified: trunk/NSString_SKExtensions.m
===================================================================
--- trunk/NSString_SKExtensions.m 2007-10-21 22:08:57 UTC (rev 3055)
+++ trunk/NSString_SKExtensions.m 2007-10-22 12:24:58 UTC (rev 3056)
@@ -230,24 +230,24 @@
// whitespace at the beginning of the string up to and including a newline
- (NSRange)rangeOfLeadingEmptyLine {
- return [self rangeOfLeadingEmptyLine:NULL];
+ return [self rangeOfLeadingEmptyLineRequiringNewline:YES];
}
-- (NSRange)rangeOfLeadingEmptyLine:(BOOL *)onlyWhite {
- return [self rangeOfLeadingEmptyLine:onlyWhite range:NSMakeRange(0, [self
length])];
+- (NSRange)rangeOfLeadingEmptyLineRequiringNewline:(BOOL)requireNL {
+ return [self rangeOfLeadingEmptyLineRequiringNewline:requireNL
range:NSMakeRange(0, [self length])];
}
- (NSRange)rangeOfLeadingEmptyLineInRange:(NSRange)range {
- return [self rangeOfLeadingEmptyLine:NULL range:range];
+ return [self rangeOfLeadingEmptyLineRequiringNewline:YES range:range];
}
-- (NSRange)rangeOfLeadingEmptyLine:(BOOL *)onlyWhite range:(NSRange)range {
+- (NSRange)rangeOfLeadingEmptyLineRequiringNewline:(BOOL)requireNL
range:(NSRange)range {
NSRange firstCharRange = [self rangeOfCharacterFromSet:[NSCharacterSet
nonWhitespaceCharacterSet] options:0 range:range];
NSRange wsRange = NSMakeRange(NSNotFound, 0);
unsigned int start = range.location;
if (firstCharRange.location == NSNotFound) {
- if (onlyWhite)
- *onlyWhite = YES;
+ if (requireNL == NO)
+ wsRange = range;
} else {
unichar firstChar = [self characterAtIndex:firstCharRange.location];
unsigned int rangeEnd = NSMaxRange(firstCharRange);
@@ -257,38 +257,35 @@
else
wsRange = NSMakeRange(start, rangeEnd - start);
}
- if (onlyWhite)
- *onlyWhite = NO;
}
return wsRange;
}
// whitespace at the end of the string after a newline
- (NSRange)rangeOfTrailingEmptyLine {
- return [self rangeOfTrailingEmptyLine:NULL];
+ return [self rangeOfTrailingEmptyLineRequiringNewline:YES];
}
-- (NSRange)rangeOfTrailingEmptyLine:(BOOL *)onlyWhite {
- return [self rangeOfTrailingEmptyLine:onlyWhite range:NSMakeRange(0, [self
length])];
+- (NSRange)rangeOfTrailingEmptyLineRequiringNewline:(BOOL)requireNL {
+ return [self rangeOfTrailingEmptyLineRequiringNewline:requireNL
range:NSMakeRange(0, [self length])];
}
+
- (NSRange)rangeOfTrailingEmptyLineInRange:(NSRange)range {
- return [self rangeOfTrailingEmptyLine:NULL range:range];
+ return [self rangeOfTrailingEmptyLineRequiringNewline:YES range:range];
}
-- (NSRange)rangeOfTrailingEmptyLine:(BOOL *)onlyWhite range:(NSRange)range {
+- (NSRange)rangeOfTrailingEmptyLineRequiringNewline:(BOOL)requireNL
range:(NSRange)range {
NSRange lastCharRange = [self rangeOfCharacterFromSet:[NSCharacterSet
nonWhitespaceCharacterSet] options:NSBackwardsSearch range:range];
NSRange wsRange = NSMakeRange(NSNotFound, 0);
unsigned int end = NSMaxRange(range);
if (lastCharRange.location == NSNotFound) {
- if (onlyWhite)
- *onlyWhite = YES;
+ if (requireNL == NO)
+ wsRange = range;
} else {
unichar lastChar = [self characterAtIndex:lastCharRange.location];
unsigned int rangeEnd = NSMaxRange(lastCharRange);
if ([[NSCharacterSet newlineCharacterSet] characterIsMember:lastChar])
wsRange = NSMakeRange(rangeEnd, end - rangeEnd);
- if (onlyWhite)
- *onlyWhite = NO;
}
return wsRange;
}
Modified: trunk/SKTemplateParser.m
===================================================================
--- trunk/SKTemplateParser.m 2007-10-21 22:08:57 UTC (rev 3055)
+++ trunk/SKTemplateParser.m 2007-10-22 12:24:58 UTC (rev 3056)
@@ -264,17 +264,18 @@
NSString *itemTemplate = nil, *separatorTemplate = nil;
NSString *endTag;
NSRange sepTagRange, wsRange;
- BOOL onlyWhite;
// collection template tag
// ignore whitespace before the tag. Should we also remove a
newline?
if (currentTag && [(SKTag *)currentTag type] == SKTextTagType)
{
- wsRange = [[currentTag text]
rangeOfTrailingEmptyLine:&onlyWhite];
+ wsRange = [[currentTag text]
rangeOfTrailingEmptyLineRequiringNewline:[result count] != 1];
if (wsRange.location != NSNotFound) {
- [currentTag setText:[[currentTag text]
substringToIndex:wsRange.location]];
- } else if ([result count] == 1 && onlyWhite) {
- [result removeAllObjects];
- currentTag = nil;
+ if (wsRange.length == [[currentTag text] length]) {
+ [result removeLastObject];
+ currentTag = [result lastObject];
+ } else {
+ [currentTag setText:[[currentTag text]
substringToIndex:wsRange.location]];
+ }
}
}
@@ -333,17 +334,18 @@
NSString *subTemplate = nil;
NSString *endTag, *altTag;
NSRange altTagRange, wsRange;
- BOOL onlyWhite;
// condition template tag
// ignore whitespace before the tag. Should we also remove
a newline?
if (currentTag && [(SKTag *)currentTag type] ==
SKTextTagType) {
- wsRange = [[currentTag text]
rangeOfTrailingEmptyLine:&onlyWhite];
+ wsRange = [[currentTag text]
rangeOfTrailingEmptyLineRequiringNewline:[result count] != 1];
if (wsRange.location != NSNotFound) {
- [currentTag setText:[[currentTag text]
substringToIndex:wsRange.location]];
- } else if ([result count] == 1 && onlyWhite) {
- [result removeAllObjects];
- currentTag = nil;
+ if (wsRange.length == [[currentTag text] length]) {
+ [result removeLastObject];
+ currentTag = [result lastObject];
+ } else {
+ [currentTag setText:[[currentTag text]
substringToIndex:wsRange.location]];
+ }
}
}
@@ -557,17 +559,18 @@
NSAttributedString *itemTemplate = nil, *separatorTemplate =
nil;
NSString *endTag;
NSRange sepTagRange, wsRange;
- BOOL onlyWhite;
// collection template tag
// ignore whitespace before the tag. Should we also remove a
newline?
if (currentTag && [(SKTag *)currentTag type] == SKTextTagType)
{
- wsRange = [[[currentTag attributedText] string]
rangeOfTrailingEmptyLine:&onlyWhite];
+ wsRange = [[[currentTag attributedText] string]
rangeOfTrailingEmptyLineRequiringNewline:[result count] != 1];
if (wsRange.location != NSNotFound) {
- [currentTag setAttributedText:[[currentTag
attributedText] attributedSubstringFromRange:NSMakeRange(0, wsRange.location)]];
- } else if ([result count] == 1 && onlyWhite) {
- [result removeAllObjects];
- currentTag = nil;
+ if (wsRange.length == [[currentTag attributedText]
length]) {
+ [result removeLastObject];
+ currentTag = [result lastObject];
+ } else {
+ [currentTag setAttributedText:[[currentTag
attributedText] attributedSubstringFromRange:NSMakeRange(0, wsRange.location)]];
+ }
}
}
@@ -627,17 +630,18 @@
NSAttributedString *subTemplate = nil;
NSString *endTag, *altTag;
NSRange altTagRange, wsRange;
- BOOL onlyWhite;
// condition template tag
// ignore whitespace before the tag. Should we also remove
a newline?
if (currentTag && [(SKTag *)currentTag type] ==
SKTextTagType) {
- wsRange = [[[currentTag attributedText] string]
rangeOfTrailingEmptyLine:&onlyWhite];
+ wsRange = [[[currentTag attributedText] string]
rangeOfTrailingEmptyLineRequiringNewline:[result count] != 1];
if (wsRange.location != NSNotFound) {
- [currentTag setAttributedText:[[currentTag
attributedText] attributedSubstringFromRange:NSMakeRange(0, wsRange.location)]];
- } else if ([result count] == 1 && onlyWhite) {
- [result removeAllObjects];
- currentTag = nil;
+ if (wsRange.length == [[currentTag attributedText]
length]) {
+ [result removeLastObject];
+ currentTag = [result lastObject];
+ } else {
+ [currentTag setAttributedText:[[currentTag
attributedText] attributedSubstringFromRange:NSMakeRange(0, wsRange.location)]];
+ }
}
}
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems? Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit