aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMartin Fischer <martin@push-f.com>2023-08-29 13:17:59 +0200
committerMartin Fischer <martin@push-f.com>2023-09-28 10:36:08 +0200
commitbb7c64a8245769f20742502cfa942f33ccb08af7 (patch)
tree4d92489782c9cb277ac3a8f5b655808bac603bdd
parentdf5a2ae14c4976d404195e83e52b8db62be63988 (diff)
break!: add Token::EndOfFile
While the end-of-file token can also be represented by None, this is less clear than having an explicit variant. Especially when it comes to tree construction, the spec explicitly has conditions named "An end-of-file token", and it's nice if the code for tree construction can match the spec text closely.
-rw-r--r--CHANGELOG.md2
-rw-r--r--integration_tests/tests/test_html5lib.rs1
-rw-r--r--src/token.rs2
3 files changed, 5 insertions, 0 deletions
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 075373c..e59e008 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -17,6 +17,8 @@
* Replaced the `String` variant with a new `Char` variant.
(The tokenizer now emits chars instead of strings.)
+ * Added the `EndOfFile` variant.
+
* `Emitter` trait
* Removed `pop_token` method and `Token` associated type.
diff --git a/integration_tests/tests/test_html5lib.rs b/integration_tests/tests/test_html5lib.rs
index bede29a..8fedc1a 100644
--- a/integration_tests/tests/test_html5lib.rs
+++ b/integration_tests/tests/test_html5lib.rs
@@ -152,6 +152,7 @@ fn run_test_inner<R: Reader>(
system_id: doctype.system_id,
force_quirks: doctype.force_quirks,
}),
+ Token::EndOfFile => {}
};
}
diff --git a/src/token.rs b/src/token.rs
index cb584ff..3104a61 100644
--- a/src/token.rs
+++ b/src/token.rs
@@ -21,6 +21,8 @@ pub enum Token<O> {
Comment(Comment<O>),
/// An HTML doctype declaration.
Doctype(Doctype<O>),
+ /// An end-of-file token.
+ EndOfFile,
}
/// An HTML start tag, such as `<p>` or `<a>`.