Revision: 14997
          http://sourceforge.net/p/skim-app/code/14997
Author:   hofman
Date:     2025-03-21 17:38:09 +0000 (Fri, 21 Mar 2025)
Log Message:
-----------
break up selection in separated ranges to get cleaned string

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

Modified: trunk/PDFSelection_SKExtensions.m
===================================================================
--- trunk/PDFSelection_SKExtensions.m   2025-03-21 14:19:00 UTC (rev 14996)
+++ trunk/PDFSelection_SKExtensions.m   2025-03-21 17:38:09 UTC (rev 14997)
@@ -89,7 +89,7 @@
 }
 
 - (NSString *)compactedCleanedString {
-    NSArray *lines = [self selectionsByLine];
+    NSArray *lines = [self selectionComponentsOnPage:nil];
     if ([lines count] < 2)
         return [[[self string] stringByRemovingAliens] 
stringByCollapsingWhitespaceAndNewlinesAndRemovingSurroundingWhitespaceAndNewlines];
     NSMutableString *string = [NSMutableString string];
@@ -237,22 +237,17 @@
 }
 
 - (NSArray *)selectionComponentsOnPage:(PDFPage *)page {
-    if (page == nil) {
-        page = [self safeFirstPage];
-        if (page == nil)
-            return @[];
-    }
-    
     NSMutableArray *components = [NSMutableArray array];
     
     for (PDFSelection *sel in [self selectionsByLine]) {
-        NSUInteger count = [sel numberOfTextRangesOnPage:page];
+        PDFPage *aPage = page ?: [[sel pages] firstObject];
+        NSUInteger count = [sel numberOfTextRangesOnPage:aPage];
         if (count == 1) {
             [components addObject:sel];
         } else if (count > 1) {
             NSRange range = NSMakeRange(0, 0);
             for (NSUInteger i = 0; i < count; i++) {
-                NSRange nextRange = [sel rangeAtIndex:i onPage:page];
+                NSRange nextRange = [sel rangeAtIndex:i onPage:aPage];
                 if (nextRange.length == 0) {
                 } else if (range.length == 0) {
                     range = nextRange;
@@ -259,12 +254,12 @@
                 } else if (NSMaxRange(range) == nextRange.location) {
                     range.length += nextRange.length;
                 } else {
-                    [components addObject:[page selectionForRange:range]];
+                    [components addObject:[aPage selectionForRange:range]];
                     range = nextRange;
                 }
             }
             if (range.length)
-                [components addObject:[page selectionForRange:range]];
+                [components addObject:[aPage selectionForRange:range]];
         }
     }
     

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



_______________________________________________
Skim-app-commit mailing list
Skim-app-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/skim-app-commit

Reply via email to