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