extern crate html5ever;
extern crate tendril;
use std::io;
use std::default::Default;
use tendril::{ByteTendril, ReadExt};
use html5ever::tokenizer::{TokenSinkResult, TokenSink, Token, Tokenizer};
use html5ever::tokenizer::buffer_queue::BufferQueue;
struct Sink(Vec<Token>);
impl TokenSink for Sink {
type Handle = ();
fn process_token(&mut self, token: Token, _line_number: u64) -> TokenSinkResult<()> {
self.0.push(token);
TokenSinkResult::Continue
}
}
fn main() {
let mut chunk = ByteTendril::new();
io::stdin().read_to_tendril(&mut chunk).unwrap();
let mut input = BufferQueue::new();
input.push_back(chunk.try_reinterpret().unwrap());
let mut tok = Tokenizer::new(Sink(Vec::new()), Default::default());
tok.feed(&mut input);
assert!(input.is_empty());
tok.end();
}