From: <ho...@us...> - 2010-01-26 22:15:44
|
Revision: 16583 http://bibdesk.svn.sourceforge.net/bibdesk/?rev=16583&view=rev Author: hofman Date: 2010-01-26 22:15:32 +0000 (Tue, 26 Jan 2010) Log Message: ----------- make concrete string parsers conform to a protocol rather than making them subclasses of the main class, as the methods are basically disjoint Modified Paths: -------------- trunk/bibdesk/BDSKDublinCoreXMLParser.h trunk/bibdesk/BDSKJSTORParser.h trunk/bibdesk/BDSKMARCParser.h trunk/bibdesk/BDSKMODSParser.h trunk/bibdesk/BDSKPubMedParser.h trunk/bibdesk/BDSKPubMedXMLParser.h trunk/bibdesk/BDSKRISParser.h trunk/bibdesk/BDSKReferParser.h trunk/bibdesk/BDSKReferenceMinerParser.h trunk/bibdesk/BDSKSciFinderParser.h trunk/bibdesk/BDSKStringParser.h trunk/bibdesk/BDSKStringParser.m trunk/bibdesk/BDSKWebOfScienceParser.h Modified: trunk/bibdesk/BDSKDublinCoreXMLParser.h =================================================================== --- trunk/bibdesk/BDSKDublinCoreXMLParser.h 2010-01-26 16:22:25 UTC (rev 16582) +++ trunk/bibdesk/BDSKDublinCoreXMLParser.h 2010-01-26 22:15:32 UTC (rev 16583) @@ -40,5 +40,5 @@ #import "BDSKStringParser.h" -@interface BDSKDublinCoreXMLParser : BDSKStringParser +@interface BDSKDublinCoreXMLParser: NSObject <BDSKStringParser> @end Modified: trunk/bibdesk/BDSKJSTORParser.h =================================================================== --- trunk/bibdesk/BDSKJSTORParser.h 2010-01-26 16:22:25 UTC (rev 16582) +++ trunk/bibdesk/BDSKJSTORParser.h 2010-01-26 22:15:32 UTC (rev 16583) @@ -39,7 +39,7 @@ #import <Cocoa/Cocoa.h> #import "BDSKStringParser.h" -@interface BDSKJSTORParser : BDSKStringParser { +@interface BDSKJSTORParser: NSObject <BDSKStringParser> { } @end Modified: trunk/bibdesk/BDSKMARCParser.h =================================================================== --- trunk/bibdesk/BDSKMARCParser.h 2010-01-26 16:22:25 UTC (rev 16582) +++ trunk/bibdesk/BDSKMARCParser.h 2010-01-26 22:15:32 UTC (rev 16583) @@ -40,6 +40,6 @@ #import "BDSKStringParser.h" -@interface BDSKMARCParser : BDSKStringParser +@interface BDSKMARCParser: NSObject <BDSKStringParser> + (NSArray *)itemsFromMARCXMLString:(NSString *)itemString error:(NSError **)outError; @end Modified: trunk/bibdesk/BDSKMODSParser.h =================================================================== --- trunk/bibdesk/BDSKMODSParser.h 2010-01-26 16:22:25 UTC (rev 16582) +++ trunk/bibdesk/BDSKMODSParser.h 2010-01-26 22:15:32 UTC (rev 16583) @@ -39,6 +39,6 @@ #import <Cocoa/Cocoa.h> #import "BDSKStringParser.h" -@interface BDSKMODSParser : BDSKStringParser +@interface BDSKMODSParser: NSObject <BDSKStringParser> @end Modified: trunk/bibdesk/BDSKPubMedParser.h =================================================================== --- trunk/bibdesk/BDSKPubMedParser.h 2010-01-26 16:22:25 UTC (rev 16582) +++ trunk/bibdesk/BDSKPubMedParser.h 2010-01-26 22:15:32 UTC (rev 16583) @@ -39,6 +39,6 @@ #import <Foundation/Foundation.h> #import "BDSKStringParser.h" -@interface BDSKPubMedParser : BDSKStringParser { +@interface BDSKPubMedParser: NSObject <BDSKStringParser> { } @end Modified: trunk/bibdesk/BDSKPubMedXMLParser.h =================================================================== --- trunk/bibdesk/BDSKPubMedXMLParser.h 2010-01-26 16:22:25 UTC (rev 16582) +++ trunk/bibdesk/BDSKPubMedXMLParser.h 2010-01-26 22:15:32 UTC (rev 16583) @@ -39,7 +39,7 @@ #import <Cocoa/Cocoa.h> #import "BDSKStringParser.h" -@interface BDSKPubMedXMLParser : BDSKStringParser { +@interface BDSKPubMedXMLParser: NSObject <BDSKStringParser> { } Modified: trunk/bibdesk/BDSKRISParser.h =================================================================== --- trunk/bibdesk/BDSKRISParser.h 2010-01-26 16:22:25 UTC (rev 16582) +++ trunk/bibdesk/BDSKRISParser.h 2010-01-26 22:15:32 UTC (rev 16583) @@ -39,6 +39,6 @@ #import <Foundation/Foundation.h> #import "BDSKStringParser.h" -@interface BDSKRISParser : BDSKStringParser { +@interface BDSKRISParser: NSObject <BDSKStringParser> { } @end Modified: trunk/bibdesk/BDSKReferParser.h =================================================================== --- trunk/bibdesk/BDSKReferParser.h 2010-01-26 16:22:25 UTC (rev 16582) +++ trunk/bibdesk/BDSKReferParser.h 2010-01-26 22:15:32 UTC (rev 16583) @@ -39,7 +39,7 @@ #import <Cocoa/Cocoa.h> #import "BDSKStringParser.h" -@interface BDSKReferParser : BDSKStringParser { +@interface BDSKReferParser: NSObject <BDSKStringParser> { } Modified: trunk/bibdesk/BDSKReferenceMinerParser.h =================================================================== --- trunk/bibdesk/BDSKReferenceMinerParser.h 2010-01-26 16:22:25 UTC (rev 16582) +++ trunk/bibdesk/BDSKReferenceMinerParser.h 2010-01-26 22:15:32 UTC (rev 16583) @@ -39,6 +39,6 @@ #import <Foundation/Foundation.h> #import "BDSKStringParser.h" -@interface BDSKReferenceMinerParser : BDSKStringParser { +@interface BDSKReferenceMinerParser: NSObject <BDSKStringParser> { } @end Modified: trunk/bibdesk/BDSKSciFinderParser.h =================================================================== --- trunk/bibdesk/BDSKSciFinderParser.h 2010-01-26 16:22:25 UTC (rev 16582) +++ trunk/bibdesk/BDSKSciFinderParser.h 2010-01-26 22:15:32 UTC (rev 16583) @@ -39,7 +39,7 @@ #import <Cocoa/Cocoa.h> #import "BDSKStringParser.h" -@interface BDSKSciFinderParser : BDSKStringParser { +@interface BDSKSciFinderParser: NSObject <BDSKStringParser> { } Modified: trunk/bibdesk/BDSKStringParser.h =================================================================== --- trunk/bibdesk/BDSKStringParser.h 2010-01-26 16:22:25 UTC (rev 16582) +++ trunk/bibdesk/BDSKStringParser.h 2010-01-26 22:15:32 UTC (rev 16583) @@ -55,16 +55,14 @@ BDSKPubMedXMLStringType }; -// these methods are valid for the abstract class, and should not be used or defined for a concrete subclass -// for BDSKUnknownStringType, type will be determined using [string contentStringType] @interface BDSKStringParser : NSObject +// passing BDSKUnknownStringType will ise the appropriate -contentStringType + (BOOL)canParseString:(NSString *)string ofType:(NSInteger)stringType; + (NSArray *)itemsFromString:(NSString *)string ofType:(NSInteger)stringType error:(NSError **)outError; @end -// these methods must be implemented by the concrete subclasses -// for the abstract class, these will call the corresponding method above using BDSKUnknownStringType -@interface BDSKStringParser (SubclassResponsibility) + +@protocol BDSKStringParser <NSObject> + (BOOL)canParseString:(NSString *)string; + (NSArray *)itemsFromString:(NSString *)string error:(NSError **)outError; @end Modified: trunk/bibdesk/BDSKStringParser.m =================================================================== --- trunk/bibdesk/BDSKStringParser.m 2010-01-26 16:22:25 UTC (rev 16582) +++ trunk/bibdesk/BDSKStringParser.m 2010-01-26 22:15:32 UTC (rev 16583) @@ -93,27 +93,25 @@ break; default: parserClass = Nil; - } + } return parserClass; } + (BOOL)canParseString:(NSString *)string ofType:(NSInteger)stringType{ - BDSKASSERT(self == [BDSKStringParser class]); if (stringType == BDSKUnknownStringType) stringType = [string contentStringType]; Class parserClass = classForType(stringType); - BDSKASSERT(parserClass != [BDSKStringParser class]); + BDSKASSERT(parserClass == Nil || [parserClass conformsToProtocol:@protocol(BDSKStringParser)]); return [parserClass canParseString:string]; } + (NSArray *)itemsFromString:(NSString *)string ofType:(NSInteger)stringType error:(NSError **)outError{ - BDSKASSERT(self == [BDSKStringParser class]); if (stringType == BDSKUnknownStringType) stringType = [string contentStringType]; BDSKASSERT(stringType != BDSKBibTeXStringType); BDSKASSERT(stringType != BDSKNoKeyBibTeXStringType); Class parserClass = classForType(stringType); - BDSKASSERT(parserClass != [BDSKStringParser class]); + BDSKASSERT(parserClass == Nil || [parserClass conformsToProtocol:@protocol(BDSKStringParser)]); if (Nil == parserClass && outError){ *outError = [NSError mutableLocalErrorWithCode:kBDSKUnknownError localizedDescription:NSLocalizedString(@"Unsupported or invalid format", @"error when parsing text fails")]; [*outError setValue:NSLocalizedString(@"BibDesk was not able to determine the syntax of this data. It may be incorrect or an unsupported type of text.", @"error description when parsing text fails") forKey:NSLocalizedRecoverySuggestionErrorKey]; @@ -121,24 +119,6 @@ return [parserClass itemsFromString:string error:outError]; } -+ (BOOL)canParseString:(NSString *)string{ - if([self class] == [BDSKStringParser class]){ - return [self canParseString:string ofType:BDSKUnknownStringType]; - }else{ - BDSKRequestConcreteImplementation(self, _cmd); - return NO; - } -} - -+ (NSArray *)itemsFromString:(NSString *)string error:(NSError **)outError{ - if([self class] == [BDSKStringParser class]){ - return [self itemsFromString:string ofType:BDSKUnknownStringType error:outError]; - }else{ - BDSKRequestConcreteImplementation(self, _cmd); - return nil; - } -} - @end Modified: trunk/bibdesk/BDSKWebOfScienceParser.h =================================================================== --- trunk/bibdesk/BDSKWebOfScienceParser.h 2010-01-26 16:22:25 UTC (rev 16582) +++ trunk/bibdesk/BDSKWebOfScienceParser.h 2010-01-26 22:15:32 UTC (rev 16583) @@ -39,7 +39,7 @@ #import <Cocoa/Cocoa.h> #import "BDSKStringParser.h" -@interface BDSKWebOfScienceParser : BDSKStringParser { +@interface BDSKWebOfScienceParser: NSObject <BDSKStringParser> { } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |