Revision: 22771
          http://sourceforge.net/p/bibdesk/svn/22771
Author:   hofman
Date:     2018-10-08 20:29:24 +0000 (Mon, 08 Oct 2018)
Log Message:
-----------
get indexes for generic linked file specifiers in parse format command

Modified Paths:
--------------
    trunk/bibdesk/BDSKParseFormatCommand.m

Modified: trunk/bibdesk/BDSKParseFormatCommand.m
===================================================================
--- trunk/bibdesk/BDSKParseFormatCommand.m      2018-10-08 17:06:34 UTC (rev 
22770)
+++ trunk/bibdesk/BDSKParseFormatCommand.m      2018-10-08 20:29:24 UTC (rev 
22771)
@@ -77,28 +77,20 @@
         } else if ([spec isKindOfClass:[NSNameSpecifier class]] && [[spec key] 
isEqualToString:@"bibFields"]) {
             pub = [[spec containerSpecifier] objectsByEvaluatingSpecifier];
             field = [(NSNameSpecifier *)spec name];
-        } else if ([spec isKindOfClass:[NSIndexSpecifier class]]) {
-            if ([[spec key] isEqualToString:@"linkedFiles"])
-                pub = [[spec containerSpecifier] objectsByEvaluatingSpecifier];
-            else if ([[spec key] isEqualToString:@""] && [[[spec 
containerSpecifier] key] isEqualToString:@"linkedFiles"])
-                pub = [[[spec containerSpecifier] containerSpecifier] 
objectsByEvaluatingSpecifier];
-            if ([pub isKindOfClass:[BibItem class]]) {
-                field = BDSKLocalFileString;
-                i = [(NSIndexSpecifier *)spec index];
-                if (i < 0)
-                    i += [[pub localFiles] count];
-            }
-        } else if ([[spec key] isEqualToString:@"linkedFiles"]) {
+        } else if (([spec isKindOfClass:[NSIndexSpecifier class]] || [spec 
isKindOfClass:[NSMiddleSpecifier class]] || [spec 
isKindOfClass:[NSRelativeSpecifier class]] || [spec 
isKindOfClass:[NSRandomSpecifier class]]) && [[spec key] 
isEqualToString:@"linkedFiles"]) {
             pub = [[spec containerSpecifier] objectsByEvaluatingSpecifier];
-            if ([pub isKindOfClass:[BibItem class]]) {
-                NSInteger count = -2, *indices = [spec 
indicesOfObjectsByEvaluatingWithContainer:pub count:&count];
-                if (count == 1)
-                    i = indices[0];
-                else if (count == -1 && [[pub localFiles] count] == 1)
-                    i = 0;
-                else
-                    pub = nil;
-            }
+            NSInteger count = -1, *indices = [spec 
indicesOfObjectsByEvaluatingWithContainer:pub count:&count];
+            if (count == 1)
+                i = indices[0];
+            else
+                pub = nil;
+        } else if ([spec isKindOfClass:[NSIndexSpecifier class]] && [[spec 
key] isEqualToString:@""] && [[[spec containerSpecifier] key] 
isEqualToString:@"linkedFiles"]) {
+            // special case, indicesOfObjectsByEvaluatingWithContainer:count: 
fails for 'item' specifier
+            pub = [[[spec containerSpecifier] containerSpecifier] 
objectsByEvaluatingSpecifier];
+            field = BDSKLocalFileString;
+            i = [(NSIndexSpecifier *)spec index];
+            if (i < 0 && [pub isKindOfClass:[BibItem class]])
+                i += [[pub localFiles] count];
         }
         if (pub == nil) {
             [self setScriptErrorNumber:NSArgumentsWrongScriptError];
@@ -159,28 +151,28 @@
         if ((isFileField || isFile) &&
             ([NSString isEmptyString:[[NSUserDefaults standardUserDefaults] 
stringForKey:BDSKPapersFolderPathKey]] && 
              [NSString isEmptyString:[[[[pub owner] fileURL] path] 
stringByDeletingLastPathComponent]]))
-            return [NSNull null];
-        
+            return nil;
+
         for (NSString *fieldName in requiredFields) {
             if ([fieldName isEqualToString:BDSKCiteKeyString]) {
                 if([pub hasEmptyOrDefaultCiteKey])
-                    return [NSNull null];
+                    return nil;
             } else if ([fieldName isEqualToString:BDSKLocalFileString]) {
                 if ((isFile && [file URL] == nil) || [pub 
localFileURLForField:field] == nil)
-                    return [NSNull null];
+                    return nil;
             } else if ([fieldName isEqualToString:@"Document Filename"]) {
                 if ([NSString isEmptyString:[[[pub owner] fileURL] path]])
-                    return [NSNull null];
+                    return nil;
             } else if ([fieldName hasPrefix:@"Document: "]) {
                 if ([NSString isEmptyString:[[pub owner] 
documentInfoForKey:[fieldName substringFromIndex:10]]])
-                    return [NSNull null];
+                    return nil;
             } else if ([fieldName isEqualToString:BDSKAuthorEditorString]) {
                 if ([NSString isEmptyString:[pub 
valueOfField:BDSKAuthorString]] && 
                     [NSString isEmptyString:[pub 
valueOfField:BDSKEditorString]])
-                    return [NSNull null];
+                    return nil;
             } else {
                 if ([NSString isEmptyString:[pub valueOfField:fieldName]]) 
-                    return [NSNull null];
+                    return nil;
             }
         }
     }

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



_______________________________________________
Bibdesk-commit mailing list
Bibdesk-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit

Reply via email to