Refactor ServoParser Tokenizer to return TokenizerResult

This commit is contained in:
Nipun Garg 2020-01-27 23:46:37 +05:30 committed by Martin Robinson
parent 7aaad0aa7e
commit 41fe94244a
No known key found for this signature in database
GPG key ID: D56AA4FA55EFE6F8
4 changed files with 22 additions and 14 deletions

View file

@ -10,6 +10,7 @@ use crate::dom::document::Document;
use crate::dom::htmlscriptelement::HTMLScriptElement;
use crate::dom::node::Node;
use crate::dom::servoparser::{ParsingAlgorithm, Sink};
use html5ever::tokenizer::TokenizerResult;
use js::jsapi::JSTracer;
use servo_url::ServoUrl;
use xml5ever::buffer_queue::BufferQueue;
@ -39,12 +40,13 @@ impl Tokenizer {
Tokenizer { inner: tok }
}
pub fn feed(&mut self, input: &mut BufferQueue) -> Result<(), DomRoot<HTMLScriptElement>> {
#[must_use]
pub fn feed(&mut self, input: &mut BufferQueue) -> TokenizerResult<DomRoot<HTMLScriptElement>> {
self.inner.run(input);
if let Some(script) = self.inner.sink.sink.script.take() {
return Err(script);
match self.inner.sink.sink.script.take() {
Some(script) => TokenizerResult::Script(script),
None => TokenizerResult::Done,
}
Ok(())
}
pub fn end(&mut self) {