diff --git a/HTMLKit/HTMLParser.m b/HTMLKit/HTMLParser.m index 58d5450..5db0831 100644 --- a/HTMLKit/HTMLParser.m +++ b/HTMLKit/HTMLParser.m @@ -229,6 +229,28 @@ return nil; } +- (id)parseFragment +{ + if (_contextElement != nil) { + if (matches(_contextElement.tagName, @"title", @"textarea")) { + _tokenizer.state = HTMLTokenizerStateRCDATA; + } else if (matches(_contextElement.tagName, @"style", @"xmp", @"iframe", @"noembed", @"noframes")) { + _tokenizer.state = HTMLTokenizerStateRAWTEXT; + } else if ([_contextElement.tagName isEqualToString:@"script"]) { + _tokenizer.state = HTMLTokenizerStateScriptData; + } else if ([_contextElement.tagName isEqualToString:@"noscript"]) { + if (_scriptingFlag) { + _tokenizer.state = HTMLTokenizerStateRAWTEXT; + } + } else if ([_contextElement.tagName isEqualToString:@"plaintext"]) { + _tokenizer.state = HTMLTokenizerStatePLAINTEXT; + } else { + _tokenizer = HTMLTokenizerStateData; + } + } + + return nil; +} - (void)processToken:(HTMLToken *)token { @@ -289,7 +311,24 @@ - (void)processTokenByApplyingRulesForParsingTokensInForeignContent:(HTMLToken *)token { - + switch (token.type) { + case HTMLTokenTypeCharacter: + + break; + case HTMLTokenTypeComment: + + break; + case HTMLTokenTypeDoctype: + + break; + case HTMLTokenTypeStartTag: + + break; + case HTMLTokenTypeEndTag: + + break; + } +} #pragma mark -