diff --git a/HTMLKit/HTMLTokenizer.m b/HTMLKit/HTMLTokenizer.m
index 33c4150..9ae492f 100644
--- a/HTMLKit/HTMLTokenizer.m
+++ b/HTMLKit/HTMLTokenizer.m
@@ -65,6 +65,39 @@
{
_currentState = state;
}
+
+#pragma mark - Emits
+
+- (void)emitToken:(HTMLToken *)token
+{
+ [_tokens addObject:token];
+}
+
+- (void)emitEOFToken
+{
+ [self emitToken:[HTMLEOFToken new]];
+}
+
+- (void)emitCharacterToken:(UTF32Char)character
+{
+ HTMLEOFToken *previousToken = [_tokens lastObject];
+ if ([previousToken isCharacterToken]) {
+ [(HTMLCharacterToken *)previousToken appendCharacter:character];
+ } else {
+ [self emitToken:[[HTMLCharacterToken alloc] initWithCharacter:character]];
+ }
+}
+
+- (void)emitParseError:(NSString *)format, ... NS_FORMAT_FUNCTION(1, 2)
+{
+ va_list args;
+ va_start(args, format);
+ NSString *message = [[NSString alloc] initWithFormat:format arguments:args];
+ va_end(args);
+ HTMLParseErrorToken *token = [[HTMLParseErrorToken alloc] initWithReasonMessage:message];
+ [self emitToken:token];
+}
+
#pragma mark - States
- (void)HTMLTokenizerStateData