Revision: 7394
          http://skim-app.svn.sourceforge.net/skim-app/?rev=7394&view=rev
Author:   hofman
Date:     2011-07-26 17:53:42 +0000 (Tue, 26 Jul 2011)

Log Message:
-----------
split out some common code in inline function

Modified Paths:
--------------
    trunk/PDFSelection_SKExtensions.m

Modified: trunk/PDFSelection_SKExtensions.m
===================================================================
--- trunk/PDFSelection_SKExtensions.m   2011-07-26 17:27:44 UTC (rev 7393)
+++ trunk/PDFSelection_SKExtensions.m   2011-07-26 17:53:42 UTC (rev 7394)
@@ -561,65 +561,43 @@
     }
 }
 
+static inline NSRange 
addSpecifierWithCharacterRangeAndPageOrAppendRange(NSMutableArray *ranges, 
NSRange nextRange, NSRange range, PDFPage *page) {
+    if (nextRange.length == 0) {
+    } else if (range.length == 0) {
+        range = nextRange;
+    } else if (NSMaxRange(range) == nextRange.location) {
+        range.length += nextRange.length;
+    } else {
+        addSpecifierWithCharacterRangeAndPage(ranges, range, page);
+        range = nextRange;
+    }
+    return range;
+}
+
 - (id)objectSpecifier {
     NSMutableArray *ranges = [NSMutableArray array];
     for (PDFPage *page in [self pages]) {
+        NSRange range = NSMakeRange(0, 0);
         if ([self respondsToSelector:@selector(numberOfTextRangesOnPage:)] && 
[self respondsToSelector:@selector(rangeAtIndex:onPage:)]) {
             NSInteger i, iMax = [self numberOfTextRangesOnPage:page];
-            NSRange range, lastRange = NSMakeRange(0, 0);
-            for (i = 0; i < iMax; i++) {
-                range = [self rangeAtIndex:i onPage:page];
-                if (range.length == 0) {
-                } else if (lastRange.length == 0) {
-                    lastRange = range;
-                } else if (NSMaxRange(lastRange) == range.location) {
-                    lastRange.length += range.length;
-                } else {
-                    addSpecifierWithCharacterRangeAndPage(ranges, lastRange, 
page);
-                    lastRange = range;
-                }
-            }
-            if (lastRange.length)
-                addSpecifierWithCharacterRangeAndPage(ranges, lastRange, page);
+            for (i = 0; i < iMax; i++)
+                range = 
addSpecifierWithCharacterRangeAndPageOrAppendRange(ranges, [self rangeAtIndex:i 
onPage:page], range, page);
         } else if ([self 
respondsToSelector:@selector(indexOfCharactersOnPage:)]) {
             NSIndexSet *indexes = [self indexOfCharactersOnPage:page];
             if (indexes) {
                 NSUInteger idx = [indexes firstIndex];
-                NSUInteger prevIdx = NSNotFound;
-                NSRange range = NSMakeRange(NSNotFound, 0);
                 while (idx != NSNotFound) {
-                    if (prevIdx == NSNotFound || idx != prevIdx + 1) {
-                        if (range.length)
-                            addSpecifierWithCharacterRangeAndPage(ranges, 
range, page);
-                        range = NSMakeRange(idx, 1);
-                    } else {
-                        range.length++;
-                    }
-                    prevIdx = idx;
+                    range = 
addSpecifierWithCharacterRangeAndPageOrAppendRange(ranges, NSMakeRange(idx, 1), 
range, page);
                     idx = [indexes indexGreaterThanIndex:idx];
                 }
-                if (range.length)
-                    addSpecifierWithCharacterRangeAndPage(ranges, range, page);
             }
         } else if ([self respondsToSelector:@selector(numberOfRangesOnPage:)] 
&& [self respondsToSelector:@selector(rangeAtIndex:onPage:)]) {
             NSInteger i, iMax = [self numberOfRangesOnPage:page];
-            NSRange range, lastRange = NSMakeRange(0, 0);
-            for (i = 0; i < iMax; i++) {
-                range = [self rangeAtIndex:i onPage:page];
-                if (range.length == 0) {
-                } else if (lastRange.length == 0) {
-                    lastRange = range;
-                } else if (NSMaxRange(lastRange) == range.location) {
-                    lastRange.length += range.length;
-                } else {
-                    addSpecifierWithCharacterRangeAndPage(ranges, lastRange, 
page);
-                    lastRange = range;
-                }
-            }
-            if (lastRange.length)
-                addSpecifierWithCharacterRangeAndPage(ranges, lastRange, page);
+            for (i = 0; i < iMax; i++)
+                range = 
addSpecifierWithCharacterRangeAndPageOrAppendRange(ranges, [self rangeAtIndex:i 
onPage:page], range, page);
         }
-        
+        if (range.length)
+            addSpecifierWithCharacterRangeAndPage(ranges, range, page);
     }
     return ranges;
 }


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Magic Quadrant for Content-Aware Data Loss Prevention
Research study explores the data loss prevention market. Includes in-depth
analysis on the changes within the DLP market, and the criteria used to
evaluate the strengths and weaknesses of these DLP solutions.
http://www.accelacomm.com/jaw/sfnl/114/51385063/
_______________________________________________
Skim-app-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to