Revision: 11406
          http://bibdesk.svn.sourceforge.net/bibdesk/?rev=11406&view=rev
Author:   hofman
Date:     2007-10-29 10:37:47 -0700 (Mon, 29 Oct 2007)

Log Message:
-----------
Add template key for medicine journal style author names: abbreviated 
normalized without punctuation.

Modified Paths:
--------------
    trunk/bibdesk/BibAuthor.h
    trunk/bibdesk/BibAuthor.m
    trunk/bibdesk/English.lproj/TemplateOptions.strings
    trunk/bibdesk/French.lproj/TemplateOptions.strings
    trunk/bibdesk/TemplateOptions.plist

Modified: trunk/bibdesk/BibAuthor.h
===================================================================
--- trunk/bibdesk/BibAuthor.h   2007-10-29 12:42:25 UTC (rev 11405)
+++ trunk/bibdesk/BibAuthor.h   2007-10-29 17:37:47 UTC (rev 11406)
@@ -75,6 +75,7 @@
     NSString *sortableName;
     NSString *abbreviatedName;
     NSString *abbreviatedNormalizedName;
+    NSString *unpunctuatedAbbreviatedNormalizedName;
     BDSKPersonController *personController; // unretained
     BibItem *publication;
     unsigned hash;
@@ -124,6 +125,7 @@
 - (NSString *)jrPart;
 - (NSString *)abbreviatedName;
 - (NSString *)abbreviatedNormalizedName;
+- (NSString *)unpunctuatedAbbreviatedNormalizedName;
 - (NSArray *)firstNames;
 
 - (NSString *)MODSStringWithRole:(NSString *)rel;

Modified: trunk/bibdesk/BibAuthor.m
===================================================================
--- trunk/bibdesk/BibAuthor.m   2007-10-29 12:42:25 UTC (rev 11405)
+++ trunk/bibdesk/BibAuthor.m   2007-10-29 17:37:47 UTC (rev 11406)
@@ -132,6 +132,7 @@
     [sortableName release];
     [abbreviatedName release];
     [abbreviatedNormalizedName release];
+    [unpunctuatedAbbreviatedNormalizedName release];
     [firstNames release];
     [fuzzyName release];
     [super dealloc];
@@ -343,6 +344,13 @@
     return abbreviatedNormalizedName;
 }
 
+// Given a normalized name of "von Last, Jr, First Middle", this will return 
"von Last FM Jr"
+- (NSString *)unpunctuatedAbbreviatedNormalizedName{
+    if(unpunctuatedAbbreviatedNormalizedName == nil)
+        [self setupAbbreviatedNames];
+    return unpunctuatedAbbreviatedNormalizedName;
+}
+
 - (NSString *)MODSStringWithRole:(NSString *)role{
     NSMutableString *s = [NSMutableString stringWithString:@"<name 
type=\"personal\">"];
     
@@ -685,6 +693,13 @@
     }
 }
 
+- (void)setUnpunctuatedAbbreviatedNormalizedName:(NSString *)aName{
+    if(aName != unpunctuatedAbbreviatedNormalizedName){
+        [unpunctuatedAbbreviatedNormalizedName release];
+        unpunctuatedAbbreviatedNormalizedName = [aName copy];
+    }
+}
+
 // Bug #1436631 indicates that "Pomies, M.-P." was displayed as "M. -. 
Pomies", so we'll grab the first letter character instead of 
substringToIndex:1.  The technically correct solution may be to use "M. Pomies" 
in this case, but we split the first name at "." boundaries to generate the 
firstNames array.
 static inline CFStringRef copyFirstLetterCharacterString(CFAllocatorRef alloc, 
CFStringRef string)
 {
@@ -707,11 +722,13 @@
     // use fixed-size mutable strings; allow for extra ". "
     CFMutableStringRef abbrevName = CFStringCreateMutable(alloc, nameLength + 
firstNameMaxLength);
     CFMutableStringRef abbrevFirstName = NULL;
+    CFMutableStringRef shortAbbrevFirstName = NULL;
     
     if(flags.hasFirst){
         
         // allow for ". " around each character
         abbrevFirstName = CFStringCreateMutable(alloc, firstNameMaxLength);
+        shortAbbrevFirstName = CFStringCreateMutable(alloc, 
firstNameMaxLength);
         
         // loop through the first name parts (which includes middle names)
         CFIndex lastIdx = firstNameCount - 1;
@@ -721,6 +738,7 @@
             if (firstLetter != nil) {
                 CFStringAppend(abbrevFirstName, firstLetter);
                 CFStringAppend(abbrevFirstName, (idx < lastIdx ? CFSTR(". ") : 
CFSTR(".")) );
+                CFStringAppend(shortAbbrevFirstName, firstLetter);
                 CFRelease(firstLetter);
             }
         }
@@ -748,6 +766,31 @@
     }
     
     [self setAbbreviatedNormalizedName:(NSString *)abbrevName];
+    
+    // now for the unpunctuated normalized abbreviated form
+    CFStringReplaceAll(abbrevName, CFSTR(""));
+    
+    if(flags.hasVon){
+        CFStringAppend(abbrevName, (CFStringRef)vonPart);
+        CFStringAppend(abbrevName, CFSTR(" "));
+    }
+    
+    CFStringAppend(abbrevName, (CFStringRef)lastName);
+    
+    if(flags.hasFirst){
+        CFStringAppend(abbrevName, CFSTR(" "));
+        CFStringAppend(abbrevName, shortAbbrevFirstName);
+        
+        // first name was non-NULL, and we're done with it
+        CFRelease(shortAbbrevFirstName);
+    }
+    
+    if(flags.hasJr){
+        CFStringAppend(abbrevName, CFSTR(" "));
+        CFStringAppend(abbrevName, (CFStringRef)jrPart);
+    }
+    
+    [self setUnpunctuatedAbbreviatedNormalizedName:(NSString *)abbrevName];
     CFRelease(abbrevName);
 }
 

Modified: trunk/bibdesk/English.lproj/TemplateOptions.strings
===================================================================
--- trunk/bibdesk/English.lproj/TemplateOptions.strings 2007-10-29 12:42:25 UTC 
(rev 11405)
+++ trunk/bibdesk/English.lproj/TemplateOptions.strings 2007-10-29 17:37:47 UTC 
(rev 11406)
@@ -49,8 +49,9 @@
 
 "First Middle von Last, Jr." = "First 
Middle von Last, Jr.";
 "von Last, Jr., First Middle" = "von 
Last, Jr., First Middle";
-"F.M. von Last, Jr." = "F.M. von Last, 
Jr.";
-"von Last, Jr., F.M." = "von Last, 
Jr., F.M.";
+"F. M. von Last, Jr." = "F.M. von 
Last, Jr.";
+"von Last, Jr., F. M." = "von Last, 
Jr., F. M.";
+"von Last FM Jr" = "von Last FM Jr";
 "von Last, Jr." = "von Last, Jr.";
 "Last" = "Last";
 

Modified: trunk/bibdesk/French.lproj/TemplateOptions.strings
===================================================================
--- trunk/bibdesk/French.lproj/TemplateOptions.strings  2007-10-29 12:42:25 UTC 
(rev 11405)
+++ trunk/bibdesk/French.lproj/TemplateOptions.strings  2007-10-29 17:37:47 UTC 
(rev 11406)
@@ -49,8 +49,9 @@
 
 "First Middle von Last, Jr." = "First 
Middle von Last, Jr.";
 "von Last, Jr., First Middle" = "von 
Last, Jr., First Middle";
-"F.M. von Last, Jr." = "F.M. von Last, 
Jr.";
-"von Last, Jr., F.M." = "von Last, 
Jr., F.M.";
+"F. M. von Last, Jr." = "F.M. von 
Last, Jr.";
+"von Last, Jr., F. M." = "von Last, 
Jr., F. M.";
+"von Last FM Jr" = "von Last FM Jr";
 "von Last, Jr." = "von Last, Jr.";
 "Last" = "Last";
 

Modified: trunk/bibdesk/TemplateOptions.plist
===================================================================
--- trunk/bibdesk/TemplateOptions.plist 2007-10-29 12:42:25 UTC (rev 11405)
+++ trunk/bibdesk/TemplateOptions.plist 2007-10-29 17:37:47 UTC (rev 11406)
@@ -185,14 +185,18 @@
             key = normalizedName;
         },
         {
-            displayName = "F.M. von Last, Jr.";
+            displayName = "F. M. von Last, Jr.";
             key = abbreviatedName;
         },
         {
-            displayName = "von Last, Jr., F.M.";
+            displayName = "von Last, Jr., F. M.";
             key = abbreviatedNormalizedName;
         },
         {
+            displayName = "von Last FM Jr";
+            key = unpunctuatedAbbreviatedNormalizedName;
+        },
+        {
             displayName = "von Last, Jr.";
             key = fullLastName;
         },


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

-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
Bibdesk-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit

Reply via email to