Revision: 30047
          http://sourceforge.net/p/bibdesk/svn/30047
Author:   hofman
Date:     2026-02-23 17:43:21 +0000 (Mon, 23 Feb 2026)
Log Message:
-----------
implement functions before method using it to avoid predeclaring them

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

Modified: trunk/bibdesk/BDSKConverter.m
===================================================================
--- trunk/bibdesk/BDSKConverter.m       2026-02-23 17:41:29 UTC (rev 30046)
+++ trunk/bibdesk/BDSKConverter.m       2026-02-23 17:43:21 UTC (rev 30047)
@@ -47,9 +47,6 @@
 @property (nonatomic, copy) NSDictionary *texifyAccents;
 @property (nonatomic, copy) NSDictionary *detexifyAccents;
 @property (nonatomic, copy) NSCharacterSet *baseCharacterSetForTeX;
-
-static BOOL convertComposedCharacterToTeX(NSMutableString *charString, 
NSCharacterSet *baseCharacterSetForTeX, NSCharacterSet *accentCharSet, 
NSDictionary *texifyAccents);
-static BOOL convertTeXStringToComposedCharacter(NSMutableString *texString, 
NSDictionary *detexifyAccents);
 @end
 
 @implementation BDSKConverter
@@ -138,6 +135,44 @@
     [self setDetexifyAccents:[wholeDict 
objectForKey:TEX_TO_ROMAN_ACCENTS_KEY]];
 }
 
+static BOOL convertComposedCharacterToTeX(NSMutableString *charString, 
NSCharacterSet *baseCharacterSetForTeX, NSCharacterSet *accentCharSet, 
NSDictionary *texifyAccents)
+{
+    // decompose to canonical form
+    CFStringNormalize((__bridge CFMutableStringRef)charString, 
kCFStringNormalizationFormD);
+    NSUInteger decomposedLength = [charString length];
+    
+    // first check if we can convert this, we should have a base character + 
an accent we know
+    if (decomposedLength == 0 || [baseCharacterSetForTeX 
characterIsMember:[charString characterAtIndex:0]] == NO)
+        return NO;
+    // no-op; this case will likely never happen
+    else if (decomposedLength == 1)
+        return YES;
+    // @@ we could allow decomposedLength > 2, it doesn't break TeX (though it 
gives funny results)
+    else if (decomposedLength > 2 || [accentCharSet 
characterIsMember:[charString characterAtIndex:1]] == NO)
+        return NO;
+    
+    // isolate accent
+    NSString *accentChar = [charString substringWithRange:NSMakeRange(1, 1)];
+    NSString *accent = [texifyAccents objectForKey:accentChar];
+    
+    // isolate character
+    NSString *character = [charString substringWithRange:NSMakeRange(0, 1)];
+    
+    // handle i and j (others as well?)
+    if (([character isEqualToString:@"i"] || [character isEqualToString:@"j"]) 
&&
+        ![accent isEqualToString:@"c "] && ![accent isEqualToString:@"d "] && 
![accent isEqualToString:@"b "] && ![accent isEqualToString:@"k "]) {
+        character = [@"\\" stringByAppendingString:character];
+    }
+    
+    // [accent length] == 2 in some cases, and the 'character' may or may not 
have \\ prepended, so we'll just replace the entire string rather than trying 
to catch all of those cases by recomputing lengths
+    [charString replaceCharactersInRange:NSMakeRange(0, decomposedLength) 
withString:@"{\\"];
+    [charString appendString:accent];
+    [charString appendString:character];
+    [charString appendString:@"}"];
+    
+    return YES;
+}
+
 - (NSString *)copyStringByTeXifyingString:(NSString *)s{
     
     if([NSString isEmptyString:s]){
@@ -200,111 +235,16 @@
     return convertedSoFar ?: s;
 }
 
-static BOOL convertComposedCharacterToTeX(NSMutableString *charString, 
NSCharacterSet *baseCharacterSetForTeX, NSCharacterSet *accentCharSet, 
NSDictionary *texifyAccents)
-{        
-    // decompose to canonical form
-    CFStringNormalize((__bridge CFMutableStringRef)charString, 
kCFStringNormalizationFormD);
-    NSUInteger decomposedLength = [charString length];
-    
-    // first check if we can convert this, we should have a base character + 
an accent we know
-    if (decomposedLength == 0 || [baseCharacterSetForTeX 
characterIsMember:[charString characterAtIndex:0]] == NO)
-        return NO;
-    // no-op; this case will likely never happen
-    else if (decomposedLength == 1)
-        return YES;
-    // @@ we could allow decomposedLength > 2, it doesn't break TeX (though it 
gives funny results)
-    else if (decomposedLength > 2 || [accentCharSet 
characterIsMember:[charString characterAtIndex:1]] == NO)
-        return NO;
-    
-    // isolate accent
-    NSString *accentChar = [charString substringWithRange:NSMakeRange(1, 1)];
-    NSString *accent = [texifyAccents objectForKey:accentChar];
-    
-    // isolate character
-    NSString *character = [charString substringWithRange:NSMakeRange(0, 1)];
-    
-    // handle i and j (others as well?)
-    if (([character isEqualToString:@"i"] || [character isEqualToString:@"j"]) 
&&
-               ![accent isEqualToString:@"c "] && ![accent isEqualToString:@"d 
"] && ![accent isEqualToString:@"b "] && ![accent isEqualToString:@"k "]) {
-           character = [@"\\" stringByAppendingString:character];
-    }
-    
-    // [accent length] == 2 in some cases, and the 'character' may or may not 
have \\ prepended, so we'll just replace the entire string rather than trying 
to catch all of those cases by recomputing lengths
-    [charString replaceCharactersInRange:NSMakeRange(0, decomposedLength) 
withString:@"{\\"];
-    [charString appendString:accent];
-    [charString appendString:character];
-    [charString appendString:@"}"];
-    
-    return YES;
-}
-
-- (NSString *)copyStringByDeTeXifyingString:(NSString *)s{
-    
-    if([NSString isEmptyString:s]){
-        return s;
-    }
-       
-    NSUInteger start, length = [s length];
-    NSRange range = [s rangeOfString:@"{\\" options:0 range:NSMakeRange(0, 
length)];
-    
-    if (range.length == 0){
-        return s;
-    }
-    
-    NSMutableString *tmpConv = nil;
-    NSString *TEXString = nil;
-    NSRange closingRange, replaceRange;
-    NSMutableString *convertedSoFar = [s mutableCopy];
-    BOOL converted = NO;
-    
-    while (range.length > 0) {
-        
-        start = NSMaxRange(range);
-        closingRange = [convertedSoFar rangeOfString:@"}" options:0 
range:NSMakeRange(start, length - start)];
-        
-        if (closingRange.length) {
-            
-            replaceRange = NSMakeRange(range.location, closingRange.location - 
range.location + 1);
-            CFStringRef tmpString = CFStringCreateWithSubstring(NULL, 
(__bridge CFStringRef)convertedSoFar, CFRangeMake(replaceRange.location, 
replaceRange.length));
-            tmpConv = [(__bridge NSString *)tmpString mutableCopy];
-            CFRelease(tmpString);
-            
-            // see if the dictionary has a conversion, or try Unicode 
composition
-            if(TEXString = [detexifyConversions objectForKey:tmpConv]){
-                [convertedSoFar replaceCharactersInRange:replaceRange 
withString:TEXString];
-                converted = YES;
-            }else if(convertTeXStringToComposedCharacter(tmpConv, 
detexifyAccents)) {
-                [convertedSoFar replaceCharactersInRange:replaceRange 
withString:tmpConv];
-                converted = YES;
-            }
-            
-            // advance the starting search range by a single character, so if 
replacement failed we don't start at {\ again
-            // this is inside the if() since if there were no closing braces, 
there's no point in repeating the search
-            length = [convertedSoFar length];
-            range = [convertedSoFar rangeOfString:@"{\\" options:0 
range:NSMakeRange(replaceRange.location + 1, length - replaceRange.location - 
1)];
-        } else {
-            NSLog(@"missing brace in string %@", convertedSoFar);
-            range = NSMakeRange(NSNotFound, 0);
-        }
-    }
-    BDSKPOSTCONDITION(nil != convertedSoFar);
-    if (converted) {
-        return convertedSoFar;
-    } else {
-        return s;
-    }
-}
-
 // takes a sequence such as "{\'i}" or "{\v S}" (no quotes) and converts to 
appropriate composed characters
 // returns nil if unable to convert
 static BOOL convertTeXStringToComposedCharacter(NSMutableString *texString, 
NSDictionary *detexifyAccents)
-{        
+{
     // check this before creating a scanner
     if (nil == texString)
         return NO;
     
-       NSString *texAccent = nil;
-       NSString *accent = nil;
+    NSString *texAccent = nil;
+    NSString *accent = nil;
     CFIndex idx = 0, length = [texString length];
     
     CFStringInlineBuffer inlineBuffer;
@@ -322,7 +262,7 @@
     accent = [detexifyAccents objectForKey:texAccent];
     
     if (nil == accent)
-        return NO;    
+        return NO;
     
     // get the character immediately following the accent
     ch = CFStringGetCharacterFromInlineBuffer(&inlineBuffer, idx);
@@ -377,6 +317,63 @@
     return NO;
 }
 
+- (NSString *)copyStringByDeTeXifyingString:(NSString *)s{
+    
+    if([NSString isEmptyString:s]){
+        return s;
+    }
+       
+    NSUInteger start, length = [s length];
+    NSRange range = [s rangeOfString:@"{\\" options:0 range:NSMakeRange(0, 
length)];
+    
+    if (range.length == 0){
+        return s;
+    }
+    
+    NSMutableString *tmpConv = nil;
+    NSString *TEXString = nil;
+    NSRange closingRange, replaceRange;
+    NSMutableString *convertedSoFar = [s mutableCopy];
+    BOOL converted = NO;
+    
+    while (range.length > 0) {
+        
+        start = NSMaxRange(range);
+        closingRange = [convertedSoFar rangeOfString:@"}" options:0 
range:NSMakeRange(start, length - start)];
+        
+        if (closingRange.length) {
+            
+            replaceRange = NSMakeRange(range.location, closingRange.location - 
range.location + 1);
+            CFStringRef tmpString = CFStringCreateWithSubstring(NULL, 
(__bridge CFStringRef)convertedSoFar, CFRangeMake(replaceRange.location, 
replaceRange.length));
+            tmpConv = [(__bridge NSString *)tmpString mutableCopy];
+            CFRelease(tmpString);
+            
+            // see if the dictionary has a conversion, or try Unicode 
composition
+            if(TEXString = [detexifyConversions objectForKey:tmpConv]){
+                [convertedSoFar replaceCharactersInRange:replaceRange 
withString:TEXString];
+                converted = YES;
+            }else if(convertTeXStringToComposedCharacter(tmpConv, 
detexifyAccents)) {
+                [convertedSoFar replaceCharactersInRange:replaceRange 
withString:tmpConv];
+                converted = YES;
+            }
+            
+            // advance the starting search range by a single character, so if 
replacement failed we don't start at {\ again
+            // this is inside the if() since if there were no closing braces, 
there's no point in repeating the search
+            length = [convertedSoFar length];
+            range = [convertedSoFar rangeOfString:@"{\\" options:0 
range:NSMakeRange(replaceRange.location + 1, length - replaceRange.location - 
1)];
+        } else {
+            NSLog(@"missing brace in string %@", convertedSoFar);
+            range = NSMakeRange(NSNotFound, 0);
+        }
+    }
+    BDSKPOSTCONDITION(nil != convertedSoFar);
+    if (converted) {
+        return convertedSoFar;
+    } else {
+        return s;
+    }
+}
+
 @end
 
 @implementation NSString (BDSKConverter)

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