use std::collections::btree_map::Entry; use std::collections::BTreeSet; use std::collections::VecDeque; use std::mem; use std::ops::Range; use crate::offset::NoopOffset; use crate::offset::Offset; use crate::token::{AttrValueSyntax, Comment, Doctype, EndTag, StartTag, Token}; use crate::Emitter; use crate::Error; /// The default implementation of [`Emitter`], used to produce tokens. /// /// # Warning /// /// * Using the DefaultEmitter without calling [`Tokenizer::set_state`] /// results in wrong state transitions: /// /// ``` /// # use html5tokenizer::{DefaultEmitter, Event, Tokenizer, Token}; /// let emitter = DefaultEmitter::default(); /// let html = "