aboutsummaryrefslogtreecommitdiff
path: root/examples/tokenize.rs
blob: 490d4a8a6cd1b18aaecef37b433da60215f7fe41 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//! Let's you easily try out the tokenizer with e.g.
//! printf '<h1>Hello world!</h1>' | cargo run --example=tokenize

use html5tokenizer::{BasicEmitter, Event, Tokenizer};
use std::io::BufReader;

fn main() {
    let mut tokenizer = Tokenizer::new(
        BufReader::new(std::io::stdin().lock()),
        BasicEmitter::default(),
    );
    while let Some(token) = tokenizer.next() {
        for (error, _) in tokenizer.emitter_mut().drain_errors() {
            eprintln!("error: {:?}", error);
        }
        let token = token.unwrap();
        match token {
            Event::CdataOpen => println!("CDATA open"),
            Event::Token(token) => println!("{token:?}"),
        }
    }
}