[−][src]Crate toks
Efficient tokens for rcdom::RcDom
Handle
parsing
aiming for O(1) HTML DOM walking.
This library aims to provide convenient and efficient handling of HTML DOM elements.
Examples
extern crate toks; #[macro_use] extern crate html5ever; use toks::prelude::*; use std::io::{self, Read}; pub struct LinkTok { total: u32, } impl Tok for LinkTok { fn is_match(&self, qn: &QualName) -> bool { qn.local == local_name!("a") } fn process(&mut self, _: RefCell<Vec<Attribute>>, _: RefCell<Vec<Handle>>) { self.total += 1; } } // How to use // $ cargo build --example count_links // $ cat your.html | ./target/debug/examples/count_links // Link <a> count 9 fn main() { let mut chunk = String::new(); io::stdin().read_to_string(&mut chunk).unwrap(); let dom = parse_document(RcDom::default(), Default::default()).one(chunk); let mut lt = LinkTok { total: 0 }; // Dropping mut reference { recursion(&mut vec![&mut lt], dom.document); } println!("Link <a> count {}", lt.total); }
Modules
prelude | Prelude module contains several important traits that provide many of the convenience imports in advance. |
Traits
Tok | Tok in short for token which is used to recursively walk
through |
Functions
recursion | Helper function which walks through |
Type Definitions
Toks | Toks convenience type alias to Vec of Tok's. |