diff --git a/HTMLKit/HTMLParser.m b/HTMLKit/HTMLParser.m index 0ad5d59..e1ee04a 100644 --- a/HTMLKit/HTMLParser.m +++ b/HTMLKit/HTMLParser.m @@ -545,7 +545,7 @@ return YES; } - if (![_stackOfOpenElements hasElementInSpecificScopeWithTagName:formattingElement.tagName]) { + if (![_stackOfOpenElements hasElementInScopeWithTagName:formattingElement.tagName]) { [self emitParseError:@"Formatting element is not in scope"]; return YES; } @@ -1094,7 +1094,7 @@ [self insertElementForToken:token]; _tokenizer.state = HTMLTokenizerStatePLAINTEXT; } else if ([tagName isEqualToString:@"button"]) { - if ([_stackOfOpenElements hasElementInSpecificScopeWithTagName:@"button"]) { + if ([_stackOfOpenElements hasElementInScopeWithTagName:@"button"]) { [self emitParseError:@"Unexpected nested Start Tag (button) tag in
"]; [_stackOfOpenElements popElementsUntilElementPoppedWithTagName:@"button"]; } @@ -1130,7 +1130,7 @@ [_listOfActiveFormattingElements addObject:element]; } else if ([tagName isEqualToString:@"nobr"]) { [self reconstructActiveFormattingElements]; - if ([_stackOfOpenElements hasElementInSpecificScopeWithTagName:@"nobr"]) { + if ([_stackOfOpenElements hasElementInScopeWithTagName:@"nobr"]) { [self emitParseError:@"Unexpected nested Start Tag (nobr) in "]; if (![self performAdoptionAgencyAlgorithmForTagName:@"nobr"]) { #warning Handle Any Other End Tag Token @@ -1266,7 +1266,7 @@ [self reconstructActiveFormattingElements]; [self insertElementForToken:token]; } else if ([tagName isEqualToAny:@"rp", @"rt", nil]) { - if ([_stackOfOpenElements hasElementInSpecificScopeWithTagName:@"ruby"]) { + if ([_stackOfOpenElements hasElementInScopeWithTagName:@"ruby"]) { [self generateImpliedEndTagsExceptForElement:nil]; if (![self.currentNode.tagName isEqualToString:@"ruby"]) { [self emitParseError:@"Unexpected Start Tag Token (%@) not in in ", tagName]; diff --git a/HTMLKit/HTMLStackOfOpenElements.h b/HTMLKit/HTMLStackOfOpenElements.h index 72772a6..4946e8c 100644 --- a/HTMLKit/HTMLStackOfOpenElements.h +++ b/HTMLKit/HTMLStackOfOpenElements.h @@ -30,7 +30,9 @@ - (void)popElementsUntilElementPoppedWithTagName:(NSString *)tagName; - (void)popElementsUntilElementPopped:(HTMLElement *)element; -- (HTMLElement *)hasElementInSpecificScopeWithTagName:(NSString *)tagName; +- (void)popAll; + +- (HTMLElement *)hasElementInScopeWithTagName:(NSString *)tagName; - (HTMLElement *)hasElementInListItemScopeWithTagName:(NSString *)tagName; - (HTMLElement *)hasElementInButtonScopeWithTagName:(NSString *)tagName; - (HTMLElement *)hasElementInTableScopeWithTagName:(NSString *)tagName; diff --git a/HTMLKit/HTMLStackOfOpenElements.m b/HTMLKit/HTMLStackOfOpenElements.m index b411dcd..0e90ba8 100644 --- a/HTMLKit/HTMLStackOfOpenElements.m +++ b/HTMLKit/HTMLStackOfOpenElements.m @@ -128,9 +128,14 @@ [_stack removeLastObject]; } +- (void)popAll +{ + [_stack removeAllObjects]; +} + #pragma mark - Element Scope -- (HTMLElement *)hasElementInSpecificScopeWithTagName:(NSString *)tagName +- (HTMLElement *)hasElementInScopeWithTagName:(NSString *)tagName; { return [self hasElementInSpecificScopeWithTagName:tagName andElementTypes:_specificScopeElementTypes]; }