Add equality and hash method for HTML Token classes

This commit is contained in:
iska
2014-10-26 01:54:30 +02:00
parent 65bd4c15f1
commit 141310f910
5 changed files with 94 additions and 5 deletions
+17 -1
View File
@@ -26,9 +26,25 @@
return self;
}
#pragma mark - NSObject
- (BOOL)isEqual:(id)other
{
if ([other isKindOfClass:[self class]]) {
HTMLCharacterToken *token = (HTMLCharacterToken *)other;
return [self.characters isEqualToString:token.characters];
}
return NO;
}
- (NSUInteger)hash
{
return self.characters.hash;
}
- (NSString *)description
{
return [NSString stringWithFormat:@"<%@: %p Characters=%@>", self.class, self, _characters];
return [NSString stringWithFormat:@"<%@: %p Characters='%@'>", self.class, self, _characters];
}
@end
+17 -1
View File
@@ -32,9 +32,25 @@
[_data appendString:string];
}
#pragma mark - NSObject
- (BOOL)isEqual:(id)other
{
if ([other isKindOfClass:[self class]]) {
HTMLCommentToken *token = (HTMLCommentToken *)other;
return [self.data isEqualToString:token.data];
}
return NO;
}
- (NSUInteger)hash
{
return self.data.hash;
}
- (NSString *)description
{
return [NSString stringWithFormat:@"<%@: %p Data=%@>", self.class, self, _data];
return [NSString stringWithFormat:@"<%@: %p Data='%@'>", self.class, self, _data];
}
@end
+22 -2
View File
@@ -18,7 +18,7 @@
@implementation HTMLDOCTYPEToken
@synthesize name = _name;
- (instancetype)initWithName:(NSString *)name
- (instancetype)initWithName:(NSString *)name
{
self = [super init];
if (self) {
@@ -33,9 +33,29 @@
[_name appendString:string];
}
#pragma mark - NSObject
- (BOOL)isEqual:(id)other
{
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 NO;
}
- (NSUInteger)hash
{
return self.name.hash + self.publicIdentifier.hash + self.systemIdentifier.hash;
}
- (NSString *)description
{
return [NSString stringWithFormat:@"<%@: %p Name=%@>", self.class, self, _name];
return [NSString stringWithFormat:@"<%@: %p Name='%@' Public='%@' System='%@'>", self.class, self, _name, _publicIdentifier, _systemIdentifier];
}
@end
+1 -1
View File
@@ -32,7 +32,7 @@
- (NSString *)description
{
return [NSString stringWithFormat:@"<%@: %p Reason=%@ Location=%lu>", self.class, self, _reason, _location];
return [NSString stringWithFormat:@"<%@: %p Reason='%@' Location='%lu'>", self.class, self, _reason, _location];
}
@end
+37
View File
@@ -48,6 +48,25 @@
return self;
}
#pragma mark - NSObject
- (BOOL)isEqual:(id)other
{
if ([other isKindOfClass:[self class]]) {
HTMLStartTagToken *token = (HTMLStartTagToken *)other;
return (
[self.tagName isEqualToString:token.tagName] &&
[self.attributes isEqualToDictionary:token.attributes]
);
}
return NO;
}
- (NSUInteger)hash
{
return self.tagName.hash + self.attributes.hash;
}
- (NSString *)description
{
return [NSString stringWithFormat:@"<%@: %p TagName=%@>", self.class, self, self.tagName];
@@ -66,6 +85,24 @@
return self;
}
#pragma mark - NSObject
- (BOOL)isEqual:(id)other
{
if ([other isKindOfClass:[self class]]) {
HTMLStartTagToken *token = (HTMLStartTagToken *)other;
return (
[self.tagName isEqualToString:token.tagName]
);
}
return NO;
}
- (NSUInteger)hash
{
return self.tagName.hash;
}
- (NSString *)description
{
return [NSString stringWithFormat:@"<%@: %p TagName=%@>", self.class, self, self.tagName];