From d5a00713adcc973fcaf2ab6be1fb89cba838234f Mon Sep 17 00:00:00 2001 From: iska Date: Sun, 26 Oct 2014 22:27:58 +0100 Subject: [PATCH] Fix equality methods in HTML token classes for the nil-cases --- HTMLKit/HTMLCharacterToken.m | 2 +- HTMLKit/HTMLCommentToken.m | 2 +- HTMLKit/HTMLDOCTYPEToken.m | 11 +++++------ HTMLKit/HTMLTagToken.m | 11 ++++------- HTMLKit/HTMLToken.h | 4 ++++ 5 files changed, 15 insertions(+), 15 deletions(-) diff --git a/HTMLKit/HTMLCharacterToken.m b/HTMLKit/HTMLCharacterToken.m index e23a205..7f1d98e 100644 --- a/HTMLKit/HTMLCharacterToken.m +++ b/HTMLKit/HTMLCharacterToken.m @@ -36,7 +36,7 @@ { if ([other isKindOfClass:[self class]]) { HTMLCharacterToken *token = (HTMLCharacterToken *)other; - return [self.characters isEqualToString:token.characters]; + return nilOrEqual(self.characters, token.characters); } return NO; } diff --git a/HTMLKit/HTMLCommentToken.m b/HTMLKit/HTMLCommentToken.m index 3677f6c..7b1bbe9 100644 --- a/HTMLKit/HTMLCommentToken.m +++ b/HTMLKit/HTMLCommentToken.m @@ -38,7 +38,7 @@ { if ([other isKindOfClass:[self class]]) { HTMLCommentToken *token = (HTMLCommentToken *)other; - return [self.data isEqualToString:token.data]; + return nilOrEqual(self.data, token.data); } return NO; } diff --git a/HTMLKit/HTMLDOCTYPEToken.m b/HTMLKit/HTMLDOCTYPEToken.m index fd6e1f2..ff55543 100644 --- a/HTMLKit/HTMLDOCTYPEToken.m +++ b/HTMLKit/HTMLDOCTYPEToken.m @@ -39,11 +39,10 @@ { if ([other isKindOfClass:[self class]]) { HTMLDOCTYPEToken *token = (HTMLDOCTYPEToken *)other; - return ( - [self.name isEqualToString:token.name] && - [self.publicIdentifier isEqualToString:token.publicIdentifier] && - [self.systemIdentifier isEqualToString:token.systemIdentifier] - ); + return (nilOrEqual(self.name, token.name) && + nilOrEqual(self.publicIdentifier, token.publicIdentifier) && + nilOrEqual(self.systemIdentifier, token.systemIdentifier) && + self.forceQuirks == token.forceQuirks); } return NO; } @@ -55,7 +54,7 @@ - (NSString *)description { - return [NSString stringWithFormat:@"<%@: %p Name='%@' Public='%@' System='%@'>", self.class, self, _name, _publicIdentifier, _systemIdentifier]; + return [NSString stringWithFormat:@"<%@: %p Name='%@' Public='%@' System='%@' ForceQuirks='%@'>", self.class, self, _name, _publicIdentifier, _systemIdentifier, @(_forceQuirks)]; } @end diff --git a/HTMLKit/HTMLTagToken.m b/HTMLKit/HTMLTagToken.m index 2c4fe61..a1f43dc 100644 --- a/HTMLKit/HTMLTagToken.m +++ b/HTMLKit/HTMLTagToken.m @@ -54,10 +54,9 @@ { if ([other isKindOfClass:[self class]]) { HTMLStartTagToken *token = (HTMLStartTagToken *)other; - return ( - [self.tagName isEqualToString:token.tagName] && - [self.attributes isEqualToDictionary:token.attributes] - ); + + return (nilOrEqual(self.tagName, token.tagName) && + nilOrEqual(self.attributes, token.attributes)); } return NO; } @@ -91,9 +90,7 @@ { if ([other isKindOfClass:[self class]]) { HTMLStartTagToken *token = (HTMLStartTagToken *)other; - return ( - [self.tagName isEqualToString:token.tagName] - ); + return nilOrEqual(self.tagName, token.tagName); } return NO; } diff --git a/HTMLKit/HTMLToken.h b/HTMLKit/HTMLToken.h index 3c366f5..6687c5a 100644 --- a/HTMLKit/HTMLToken.h +++ b/HTMLKit/HTMLToken.h @@ -8,6 +8,10 @@ #import +NS_INLINE BOOL nilOrEqual(id first, id second) { + return (first == nil && second == nil) || ([first isEqual:second]); +} + typedef NS_ENUM(NSUInteger, HTMLTokenType) { HTMLTokenTypeCharacter,