Revision: 28023
          http://sourceforge.net/p/bibdesk/svn/28023
Author:   hofman
Date:     2022-10-14 09:23:49 +0000 (Fri, 14 Oct 2022)
Log Message:
-----------
pass monitoring flag through class factory method for web parser

Modified Paths:
--------------
    trunk/bibdesk/BDSKInspireParser.m
    trunk/bibdesk/BDSKWebGroup.m
    trunk/bibdesk/BDSKWebParser.h
    trunk/bibdesk/BDSKWebParser.m

Modified: trunk/bibdesk/BDSKInspireParser.m
===================================================================
--- trunk/bibdesk/BDSKInspireParser.m   2022-10-14 06:30:14 UTC (rev 28022)
+++ trunk/bibdesk/BDSKInspireParser.m   2022-10-14 09:23:49 UTC (rev 28023)
@@ -70,7 +70,7 @@
             ([[url query] length] > 0 || [[url path] length] > 12);
 }
 
-+ (BOOL)wantsMonitoringURL:(NSURL *)url {
++ (BOOL)shouldMonitorURL:(NSURL *)url {
     return [[[url host] lowercaseString] isEqualToString:@"inspirehep.net"];
 }
 

Modified: trunk/bibdesk/BDSKWebGroup.m
===================================================================
--- trunk/bibdesk/BDSKWebGroup.m        2022-10-14 06:30:14 UTC (rev 28022)
+++ trunk/bibdesk/BDSKWebGroup.m        2022-10-14 09:23:49 UTC (rev 28023)
@@ -248,10 +248,11 @@
 - (void)webView:(WebView *)sender didFinishLoadForFrame:(WebFrame *)frame {
        NSURL *url = [[[frame dataSource] request] URL];
     DOMDocument *domDocument = [frame DOMDocument];
-    
     NSError *error = nil;
-    BDSKWebParser *parser = [BDSKWebParser parserForDocument:domDocument 
fromURL:url error:&error];
+    BOOL shouldMonitorURL = NO;
     
+    BDSKWebParser *parser = [BDSKWebParser parserForDocument:domDocument 
fromURL:url shouldMonitor:&shouldMonitorURL error:&error];
+    
     if (parser) {
         
         if (parsers == nil)
@@ -264,12 +265,8 @@
         // the parser can finish immediately
         [parser startWithDelegate:self];
         
-        if ([[parser class] wantsMonitoringURL:url])
-            [webView monitorURL];
-        
     } else {
         
-        BOOL wantsMonitoringURL = [[[error userInfo] 
objectForKey:BDSKWantsMonitoringURLKey] boolValue];
         NSArray *newPubs = nil;
         WebDataSource *dataSource = [frame dataSource];
         NSString *MIMEType = [[dataSource mainResource] MIMEType];
@@ -312,10 +309,10 @@
             [self notifyUpdate];
         if (frame != [sender mainFrame] && [newPubs count] > 0)
             [self setObject:[[newPubs mutableCopy] autorelease] 
forKey:PUBLICATIONS_KEY forFrame:frame];
-        
-        if (wantsMonitoringURL)
-            [webView monitorURL];
     }
+    
+    if (shouldMonitorURL)
+        [webView monitorURL];
 }
 
 - (void)webView:(WebView *)sender didFailLoadForFrame:(WebFrame *)frame {

Modified: trunk/bibdesk/BDSKWebParser.h
===================================================================
--- trunk/bibdesk/BDSKWebParser.h       2022-10-14 06:30:14 UTC (rev 28022)
+++ trunk/bibdesk/BDSKWebParser.h       2022-10-14 09:23:49 UTC (rev 28023)
@@ -40,8 +40,6 @@
 #import <WebKit/WebKit.h>
 #import "BDSKOwnerProtocol.h"
 
-extern NSString *BDSKWantsMonitoringURLKey;
-
 typedef NS_ENUM(NSInteger, BDSKParserFeature) {
     BDSKParserFeaturePublic = 0,
 // flag indicating that full usage of the parser's feature requires some sort 
of subscription
@@ -60,7 +58,7 @@
 }
 
 // this method is the main entry point for the BDSKWebParser class
-+ (BDSKWebParser *)parserForDocument:(DOMDocument *)domDocument fromURL:(NSURL 
*)url error:(NSError **)outError;
++ (BDSKWebParser *)parserForDocument:(DOMDocument *)domDocument fromURL:(NSURL 
*)url shouldMonitor:(BOOL *)shouldMonitor error:(NSError **)outError;
 
 // Returns all parser classes of a specific feature
 + (NSArray *)parsers;
@@ -90,7 +88,7 @@
 + (BOOL)canParseDocument:(DOMDocument *)domDocument fromURL:(NSURL *)url;
 
 // this may be overridden by subclasses
-+ (BOOL)wantsMonitoringURL:(NSURL *)url;
++ (BOOL)shouldMonitorURL:(NSURL *)url;
 
 // main method for subclasses to implement
 - (NSArray *)itemsReturningError:(NSError **)outError;

Modified: trunk/bibdesk/BDSKWebParser.m
===================================================================
--- trunk/bibdesk/BDSKWebParser.m       2022-10-14 06:30:14 UTC (rev 28022)
+++ trunk/bibdesk/BDSKWebParser.m       2022-10-14 09:23:49 UTC (rev 28023)
@@ -67,8 +67,6 @@
 
 #define BDSKEnableGoogleScholarWebParserKey @"BDSKEnableGoogleScholarWebParser"
 
-NSString *BDSKWantsMonitoringURLKey = @"BDSKWantsMonitoringURL";
-
 @implementation BDSKWebParser
 
 @synthesize domDocument, URL, delegate, finishedStarting;
@@ -129,24 +127,25 @@
 }
 
 // entry point for web group
-+ (BDSKWebParser *)parserForDocument:(DOMDocument *)domDocument fromURL:(NSURL 
*)url error:(NSError **)outError{
++ (BDSKWebParser *)parserForDocument:(DOMDocument *)domDocument fromURL:(NSURL 
*)url shouldMonitor:(BOOL *)shouldMonitor error:(NSError **)outError{
     
     Class parserClass = Nil;
-    BOOL wantsMonitoringURL = NO;
+    BOOL shouldMonitorURL = NO;
     for (parserClass in [self parsers]) {
+        if ([parserClass shouldMonitorURL:url])
+            shouldMonitorURL = YES;
         if ([parserClass canParseDocument:domDocument fromURL:url])
             break;
-        else if ([parserClass wantsMonitoringURL:url])
-            wantsMonitoringURL = YES;
     }
     
+    if (shouldMonitor)
+        *shouldMonitor = shouldMonitorURL;
+    
     // this may lead to some false negatives if the heuristics for 
canParseDocument::: change.
     if (Nil == parserClass) {
         if (outError) {
             *outError = [NSError 
mutableLocalErrorWithCode:kBDSKWebParserUnsupported 
localizedDescription:NSLocalizedString(@"Unsupported URL", @"error when parsing 
text fails")];
             [*outError setValue:NSLocalizedString(@"BibDesk was not able to 
find a parser for this web page.", @"error description") 
forKey:NSLocalizedRecoverySuggestionErrorKey];
-            if (wantsMonitoringURL)
-                [*outError setValue:[NSNumber 
numberWithBool:wantsMonitoringURL] forKey:BDSKWantsMonitoringURLKey];
         }
         return nil;
     }
@@ -156,7 +155,7 @@
     return [[[parserClass alloc] initWithDocument:domDocument fromURL:url] 
autorelease];
 }
 
-+ (BOOL)wantsMonitoringURL:(NSURL *)url { return NO; }
++ (BOOL)shouldMonitorURL:(NSURL *)url { return NO; }
 
 + (NSArray *)parsersForFeature:(BDSKParserFeature)feature {
     return [[self parsers] filteredArrayUsingPredicate:[NSPredicate 
predicateWithFormat:@"feature = %lu", (unsigned long)feature]];
@@ -233,7 +232,7 @@
 
 - (NSArray *)itemsReturningError:(NSError **)outError { return nil; }
 
-- (BOOL)wantsMonitoringURL { return NO; }
+- (BOOL)shouldMonitorURL { return NO; }
 
 + (BOOL)canParseDocument:(DOMDocument *)domDocument fromURL:(NSURL *)url { 
return NO; }
 

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