Revision: 22005
          http://sourceforge.net/p/bibdesk/svn/22005
Author:   hofman
Date:     2018-02-22 11:02:32 +0000 (Thu, 22 Feb 2018)
Log Message:
-----------
better xpath for bibtex, check all text of elements

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

Modified: trunk/bibdesk/BDSKBibTeXWebParser.m
===================================================================
--- trunk/bibdesk/BDSKBibTeXWebParser.m 2018-02-22 07:30:33 UTC (rev 22004)
+++ trunk/bibdesk/BDSKBibTeXWebParser.m 2018-02-22 11:02:32 UTC (rev 22005)
@@ -48,7 +48,7 @@
 
 + (BOOL)canParseDocument:(DOMDocument *)domDocument xmlDocument:(NSXMLDocument 
*)xmlDocument fromURL:(NSURL *)url{
     
-    NSString *mayContainBibtexXPath = @"./body//*[contains(text(),'@') and 
(contains(text(),'{') or contains(text(),'('))]";
+    NSString *mayContainBibtexXPath = @"./body//*/text()[contains(.,'@')]/..";
     NSError *error;
     
     NSArray *nodes = [[xmlDocument rootElement] 
nodesForXPath:mayContainBibtexXPath error:&error];
@@ -59,7 +59,9 @@
        AGRegex *bibtexRegex = [AGRegex regexWithPattern:@"@[[:alpha:]]+[ 
\\t]*[{(]"];
        
     for (NSXMLNode *node in nodes) {
-        if ([bibtexRegex findInString:[node stringValue]])
+        // stringValue replaces <br /> with "\\n" rather than "\n"
+        NSString *string = [[node stringValue] 
stringByReplacingOccurrencesOfString:@"\\n" withString:@"\n"];
+        if ([bibtexRegex findInString:string])
             return YES;
     }
     
@@ -70,7 +72,7 @@
 - (void)start {
     
     NSMutableArray *items = [NSMutableArray array];
-    NSString *mayContainBibtexXPath = @"./body//*[contains(text(),'@') and 
(contains(text(),'{') or contains(text(),'('))]";
+    NSString *mayContainBibtexXPath = @"./body//*/text()[contains(.,'@')]/..";
     NSError *error = nil;
     NSArray *nodes = [[xmlDocument rootElement] 
nodesForXPath:mayContainBibtexXPath error:&error];
     
@@ -79,8 +81,8 @@
         AGRegex *bibtexRegex = [AGRegex regexWithPattern:@"@[[:alpha:]]+[ 
\\t]*[{(]"];
         
         for (NSXMLNode *node in nodes) {
-            NSString *string = [node stringValue];
-            
+            NSString *string = [[node stringValue] 
stringByReplacingOccurrencesOfString:@"\\n" withString:@"\n"];
+
             AGRegexMatch *match = [bibtexRegex findInString:string];
             
             if (match) {

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


------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Bibdesk-commit mailing list
Bibdesk-commit@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/bibdesk-commit

Reply via email to