Revision: 27613
          http://sourceforge.net/p/bibdesk/svn/27613
Author:   hofman
Date:     2022-06-12 08:44:33 +0000 (Sun, 12 Jun 2022)
Log Message:
-----------
Compare existing URLs case insensitive when merging

Modified Paths:
--------------
    trunk/bibdesk/BDSKMergeController.m
    trunk/bibdesk/BibItem.m

Modified: trunk/bibdesk/BDSKMergeController.m
===================================================================
--- trunk/bibdesk/BDSKMergeController.m 2022-06-12 08:36:17 UTC (rev 27612)
+++ trunk/bibdesk/BDSKMergeController.m 2022-06-12 08:44:33 UTC (rev 27613)
@@ -187,6 +187,15 @@
     return [overwriteFields count] > 0;
 }
 
+static inline BOOL filesContainURL(NSURL *url, NSArray *files) {
+    NSString *urlString = [url absoluteString];
+    for (BDSKLinkedFile *file in files) {
+        if ([url isFileURL] == [file isFile] && [urlString 
isCaseInsensitiveEqual:[[file URL] absoluteString]])
+            return YES;
+    }
+    return NO;
+}
+
 - (void)setupFieldsWithPublication:(BibItem *)mergedPublication {
     overwriteFields = [[NSMutableArray alloc] init];
     addedFields = [[NSMutableArray alloc] init];
@@ -212,7 +221,7 @@
         if ([field hasPrefix:@"Bdsk-File-"]) {
             if (files) {
                 NSURL *aURL = [[BDSKLinkedFile 
linkedFileWithBase64String:newValue delegate:publication] URL];
-                if (aURL && [[[publication localFiles] valueForKey:@"URL"] 
containsObject:aURL] == NO) {
+                if (aURL && filesContainURL(aURL, [publication files]) == NO) {
                     [files insertObject:aURL atIndex:fileIdx++];
                 }
             }
@@ -219,7 +228,7 @@
         } else if ([field hasPrefix:@"Bdsk-Url-"]) {
             if (files) {
                 NSURL *aURL = [NSURL URLWithString:newValue];
-                if (aURL && [[[publication remoteURLs] valueForKey:@"URL"] 
containsObject:aURL] == NO) {
+                if (aURL && filesContainURL(aURL, [publication files]) == NO) {
                     [files addObject:aURL];
                 }
             }
@@ -269,7 +278,7 @@
     if (files) {
         for (BDSKLinkedFile *aFile in [mergedPublication files]) {
             NSURL *aURL = [aFile URL];
-            if (aURL && [[[publication files] valueForKey:@"URL"] 
containsObject:aURL] == NO) {
+            if (aURL && filesContainURL(aURL, [publication files]) == NO) {
                 if ([aURL isFileURL])
                     [files insertObject:aURL atIndex:fileIdx++];
                 else

Modified: trunk/bibdesk/BibItem.m
===================================================================
--- trunk/bibdesk/BibItem.m     2022-06-12 08:36:17 UTC (rev 27612)
+++ trunk/bibdesk/BibItem.m     2022-06-12 08:44:33 UTC (rev 27613)
@@ -3058,10 +3058,10 @@
     if (urlValue) {
         // see if this file was converted previously to avoid duplication
         NSArray *currentURLs = [self 
valueForKeyPath:@"files.URL.absoluteString.lowercaseString"];
-        NSString *urlString = [[urlValue absoluteString] lowercaseString];
+        NSString *urlString = [urlValue absoluteString];
         BOOL converted = NO;
         for (BDSKLinkedFile *file in self->files) {
-            if ([urlValue isFileURL] == [file isFile] && [[[[file URL] 
absoluteString] lowercaseString] isEqualToString:urlString]) {
+            if ([urlValue isFileURL] == [file isFile] && [[[file URL] 
absoluteString] isCaseInsensitiveEqual:urlString]) {
                 converted = YES;
                 break;
             }

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



_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit

Reply via email to