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,