diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/lib.rs | 2 | ||||
-rw-r--r-- | src/never.rs | 3 | ||||
-rw-r--r-- | src/tokenizer.rs | 44 |
3 files changed, 2 insertions, 47 deletions
@@ -20,4 +20,4 @@ pub use emitter::{Attribute, DefaultEmitter, Doctype, Emitter, EndTag, StartTag, pub use error::Error; pub use never::Never; pub use reader::{BufReadReader, IntoReader, Reader, StringReader}; -pub use tokenizer::{InfallibleTokenizer, State, Tokenizer}; +pub use tokenizer::{State, Tokenizer}; diff --git a/src/never.rs b/src/never.rs index b4bb371..85a1243 100644 --- a/src/never.rs +++ b/src/never.rs @@ -5,9 +5,6 @@ use std::fmt; /// /// This is used as the error type in situations where there can't be an error. A `Result<T, Never>` /// can be safely unwrapped and the `unwrap()` may be optimized away entirely. -/// -/// This error is typically encountered when attempting to get tokens from the `Tokenizer`. Call -/// [`Tokenizer::infallible`] if you wish to avoid unwrapping those results yourself. pub enum Never {} impl fmt::Display for Never { diff --git a/src/tokenizer.rs b/src/tokenizer.rs index b2d4b53..b1dd4ba 100644 --- a/src/tokenizer.rs +++ b/src/tokenizer.rs @@ -1,10 +1,8 @@ -use std::ops::{Deref, DerefMut}; - use crate::machine; use crate::utils::{ control_pat, noncharacter_pat, surrogate_pat, ControlToken, State as InternalState, }; -use crate::{DefaultEmitter, Emitter, Error, IntoReader, Never, Reader}; +use crate::{DefaultEmitter, Emitter, Error, IntoReader, Reader}; // this is a stack that can hold 0 to 2 Ts #[derive(Debug, Default, Clone, Copy)] @@ -256,46 +254,6 @@ impl<R: Reader, E: Emitter<R>> Iterator for Tokenizer<R, E> { } } -/// A kind of tokenizer that directly yields tokens when used as an iterator, so `Token` instead of -/// `Result<Token, _>`. -/// -/// This is the return value of [`Tokenizer::infallible`]. -pub struct InfallibleTokenizer<R: Reader<Error = Never>, E: Emitter<R>>(Tokenizer<R, E>); - -impl<R: Reader<Error = Never>, E: Emitter<R>> Tokenizer<R, E> { - /// Statically assert that this iterator is infallible. - /// - /// Call this to get rid of error handling when parsing HTML from strings. - pub fn infallible(self) -> InfallibleTokenizer<R, E> { - InfallibleTokenizer(self) - } -} - -impl<R: Reader<Error = Never>, E: Emitter<R>> Iterator for InfallibleTokenizer<R, E> { - type Item = E::Token; - - fn next(&mut self) -> Option<Self::Item> { - match self.0.next()? { - Ok(token) => Some(token), - Err(e) => match e {}, - } - } -} - -impl<R: Reader<Error = Never>, E: Emitter<R>> Deref for InfallibleTokenizer<R, E> { - type Target = Tokenizer<R, E>; - - fn deref(&self) -> &Self::Target { - &self.0 - } -} - -impl<R: Reader<Error = Never>, E: Emitter<R>> DerefMut for InfallibleTokenizer<R, E> { - fn deref_mut(&mut self) -> &mut Self::Target { - &mut self.0 - } -} - impl<S: crate::spans::Span<R>, R: Reader> Tokenizer<R, DefaultEmitter<R, S>> { /// Test-internal function to override internal state. /// |