Fix equality methods in HTML token classes for the nil-cases
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
@@ -8,6 +8,10 @@
|
||||
|
||||
#import <Foundation/Foundation.h>
|
||||
|
||||
NS_INLINE BOOL nilOrEqual(id first, id second) {
|
||||
return (first == nil && second == nil) || ([first isEqual:second]);
|
||||
}
|
||||
|
||||
typedef NS_ENUM(NSUInteger, HTMLTokenType)
|
||||
{
|
||||
HTMLTokenTypeCharacter,
|
||||
|
||||
Reference in New Issue
Block a user