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

Reply via email to