Revision: 3046
          http://skim-app.svn.sourceforge.net/skim-app/?rev=3046&view=rev
Author:   hofman
Date:     2007-10-17 05:12:09 -0700 (Wed, 17 Oct 2007)

Log Message:
-----------
Fix leading empty line after a template tag, and include full LR+CF in trailing 
empty line. Whitespace without a newline should not be ignored inside a tag.

Modified Paths:
--------------
    trunk/NSString_SKExtensions.h
    trunk/NSString_SKExtensions.m

Modified: trunk/NSString_SKExtensions.h
===================================================================
--- trunk/NSString_SKExtensions.h       2007-10-15 19:59:28 UTC (rev 3045)
+++ trunk/NSString_SKExtensions.h       2007-10-17 12:12:09 UTC (rev 3046)
@@ -56,7 +56,9 @@
 - (NSString *)stringByEscapingParenthesis;
 
 - (NSRange)rangeOfLeadingEmptyLine;
+- (NSRange)rangeOfLeadingEmptyLine:(BOOL *)onlyWhite;
 - (NSRange)rangeOfLeadingEmptyLineInRange:(NSRange)range;
+- (NSRange)rangeOfLeadingEmptyLine:(BOOL *)onlyWhite range:(NSRange)range;
 - (NSRange)rangeOfTrailingEmptyLine;
 - (NSRange)rangeOfTrailingEmptyLine:(BOOL *)onlyWhite;
 - (NSRange)rangeOfTrailingEmptyLineInRange:(NSRange)range;

Modified: trunk/NSString_SKExtensions.m
===================================================================
--- trunk/NSString_SKExtensions.m       2007-10-15 19:59:28 UTC (rev 3045)
+++ trunk/NSString_SKExtensions.m       2007-10-17 12:12:09 UTC (rev 3046)
@@ -230,14 +230,25 @@
 
 // whitespace at the beginning of the string up to the end or until (and 
including) a newline
 - (NSRange)rangeOfLeadingEmptyLine {
-    return [self rangeOfLeadingEmptyLineInRange:NSMakeRange(0, [self length])];
+    return [self rangeOfLeadingEmptyLine:NULL];
 }
 
+- (NSRange)rangeOfLeadingEmptyLine:(BOOL *)onlyWhite {
+    return [self rangeOfLeadingEmptyLine:onlyWhite range:NSMakeRange(0, [self 
length])];
+}
+
 - (NSRange)rangeOfLeadingEmptyLineInRange:(NSRange)range {
+    return [self rangeOfLeadingEmptyLine:NULL range:range];
+}
+
+- (NSRange)rangeOfLeadingEmptyLine:(BOOL *)onlyWhite 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 (firstCharRange.location == NSNotFound) {
+        if (onlyWhite)
+            *onlyWhite = YES;
+    } else {
         unichar firstChar = [self characterAtIndex:firstCharRange.location];
         unsigned int rangeEnd = NSMaxRange(firstCharRange);
         if([[NSCharacterSet newlineCharacterSet] characterIsMember:firstChar]) 
{
@@ -246,6 +257,8 @@
             else 
                 wsRange = NSMakeRange(start, rangeEnd - start);
         }
+        if (onlyWhite)
+            *onlyWhite = NO;
     }
     return wsRange;
 }
@@ -272,8 +285,12 @@
     } else {
         unichar lastChar = [self characterAtIndex:lastCharRange.location];
         unsigned int rangeEnd = NSMaxRange(lastCharRange);
-        if (rangeEnd < end && [[NSCharacterSet newlineCharacterSet] 
characterIsMember:lastChar]) 
-            wsRange = NSMakeRange(rangeEnd, end - rangeEnd);
+        if (rangeEnd < end && [[NSCharacterSet newlineCharacterSet] 
characterIsMember:lastChar]) {
+            if (lastChar == '\n' && rangeEnd - 1 > range.location && [self 
characterAtIndex:rangeEnd - 2] == '\r')
+                wsRange = NSMakeRange(rangeEnd - 1, end - rangeEnd + 1);
+            else
+                wsRange = NSMakeRange(rangeEnd, end - rangeEnd);
+        }
         if (onlyWhite)
             *onlyWhite = NO;
     }


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