Revision: 12812
          http://sourceforge.net/p/skim-app/code/12812
Author:   hofman
Date:     2022-03-19 10:22:26 +0000 (Sat, 19 Mar 2022)
Log Message:
-----------
check for hyphen and soft hyphen, using custom character set. Use method 
instead of function.

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

Modified: trunk/NSCharacterSet_SKExtensions.h
===================================================================
--- trunk/NSCharacterSet_SKExtensions.h 2022-03-18 22:40:33 UTC (rev 12811)
+++ trunk/NSCharacterSet_SKExtensions.h 2022-03-19 10:22:26 UTC (rev 12812)
@@ -43,4 +43,5 @@
 + (id)nonWhitespaceAndNewlineCharacterSet;
 + (id)URLBookmarkNameAllowedCharacterSet;
 + (id)URLGenericAllowedCharacterSet;
++ (id)hyphensCharacterSet;
 @end

Modified: trunk/NSCharacterSet_SKExtensions.m
===================================================================
--- trunk/NSCharacterSet_SKExtensions.m 2022-03-18 22:40:33 UTC (rev 12811)
+++ trunk/NSCharacterSet_SKExtensions.m 2022-03-19 10:22:26 UTC (rev 12812)
@@ -70,4 +70,16 @@
     return URLGenericAllowedCharacterSet;
 }
 
++ (id)hyphensCharacterSet {
+    static NSCharacterSet *hyphensCharacterSet = nil;
+    if (hyphensCharacterSet == nil) {
+        NSMutableCharacterSet *tmpSet = [[NSMutableCharacterSet alloc] init];
+        [tmpSet addCharactersInRange:NSMakeRange(0x2D, 1)];
+        [tmpSet addCharactersInRange:NSMakeRange(0xAD, 1)];
+        hyphensCharacterSet = [tmpSet copy];
+        [tmpSet release];
+    }
+    return hyphensCharacterSet;
+}
+
 @end

Modified: trunk/PDFSelection_SKExtensions.m
===================================================================
--- trunk/PDFSelection_SKExtensions.m   2022-03-18 22:40:33 UTC (rev 12811)
+++ trunk/PDFSelection_SKExtensions.m   2022-03-19 10:22:26 UTC (rev 12812)
@@ -44,6 +44,7 @@
 #import "SKMainDocument.h"
 #import "NSPointerArray_SKExtensions.h"
 #import "NSColor_SKExtensions.h"
+#import "NSCharacterSet_SKExtensions.h"
 
 #define SKIncludeNewlinesFromEnclosedTextKey 
@"SKIncludeNewlinesFromEnclosedText"
 
@@ -76,12 +77,12 @@
     return [[self safeFirstPage] displayLabel];
 }
 
-static inline BOOL consecutiveSelections(PDFSelection *sel1, PDFSelection 
*sel2) {
-    PDFPage *page = [sel1 safeLastPage];
-    if ([[sel2 safeFirstPage] isEqual:page] == NO)
+- (BOOL)isConsecutiveToSelection:(PDFSelection *)selection {
+    PDFPage *page = [selection safeLastPage];
+    if ([[self safeFirstPage] isEqual:page] == NO)
         return NO;
-    NSUInteger i = [sel1 safeIndexOfLastCharacterOnPage:page];
-    NSUInteger j = [sel2 safeIndexOfFirstCharacterOnPage:page];
+    NSUInteger i = [selection safeIndexOfLastCharacterOnPage:page];
+    NSUInteger j = [self safeIndexOfFirstCharacterOnPage:page];
     if (i + 1 == j)
         return YES;
     if (i + 2 != j)
@@ -98,8 +99,8 @@
     for (PDFSelection *line in lines) {
         NSString *str = [[[line string] stringByRemovingAliens] 
stringByCollapsingWhitespaceAndNewlinesAndRemovingSurroundingWhitespaceAndNewlines];
         if ([str length] == 0) continue;
-        NSInteger l = [string length];
-        if (l > 1 && [string characterAtIndex:l - 1] == '-' && 
[[NSCharacterSet letterCharacterSet] characterIsMember:[string 
characterAtIndex:l - 2]] && consecutiveSelections(lastLine, line))
+        NSUInteger l = [string length];
+        if (l > 1 && [[NSCharacterSet hyphensCharacterSet] 
characterIsMember:[string characterAtIndex:l - 1]] && [[NSCharacterSet 
letterCharacterSet] characterIsMember:[string characterAtIndex:l - 2]] && [line 
isConsecutiveToSelection:lastLine])
             [string deleteCharactersInRange:NSMakeRange(l - 1, 1)];
         else if (l > 0)
             [string appendString:@" "];

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