Trying to abstract out traversal, test hanging
This commit is contained in:
parent
359be3a3e3
commit
e20ec1224e
@ -31,6 +31,7 @@ mod css_at_rule {
|
|||||||
mod arena_dom;
|
mod arena_dom;
|
||||||
mod config;
|
mod config;
|
||||||
mod css_parser;
|
mod css_parser;
|
||||||
|
mod traverser;
|
||||||
|
|
||||||
use arena_dom::{create_element, html5ever_parse_slice_into_arena, Arena, NodeData, Ref};
|
use arena_dom::{create_element, html5ever_parse_slice_into_arena, Arena, NodeData, Ref};
|
||||||
use config::permissive::{ADD_ATTRIBUTES, ALL_ATTRIBUTES, ATTRIBUTES, ELEMENTS, PROTOCOLS};
|
use config::permissive::{ADD_ATTRIBUTES, ALL_ATTRIBUTES, ATTRIBUTES, ELEMENTS, PROTOCOLS};
|
||||||
|
1
src/test/div.html
Normal file
1
src/test/div.html
Normal file
@ -0,0 +1 @@
|
|||||||
|
<div></div>
|
63
src/traverser.rs
Normal file
63
src/traverser.rs
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
extern crate typed_arena;
|
||||||
|
|
||||||
|
use std::io::{self, Read, Error};
|
||||||
|
|
||||||
|
use html5ever::{serialize, Attribute, LocalName, QualName};
|
||||||
|
|
||||||
|
use crate::arena_dom::{html5ever_parse_slice_into_arena, Arena, Node, Ref};
|
||||||
|
|
||||||
|
pub struct Traverser<'arena> {
|
||||||
|
arena: typed_arena::Arena<Node<'arena>>,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl<'arena> Traverser<'arena> {
|
||||||
|
fn new() -> Traverser<'arena> {
|
||||||
|
Traverser {
|
||||||
|
arena: typed_arena::Arena::new(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
fn traverse(&'arena self, data: &mut impl Read) -> Result<(), Error> {
|
||||||
|
dbg!("traverse");
|
||||||
|
let mut bytes = Vec::new();
|
||||||
|
data.read_to_end(&mut bytes)?;
|
||||||
|
dbg!(&bytes);
|
||||||
|
// let node = html5ever_parse_slice_into_arena(&bytes, &self.arena);
|
||||||
|
// dbg!(&node);
|
||||||
|
// self.visit(node);
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
|
fn visit(&'arena self, node: Ref<'arena>) {
|
||||||
|
dbg!(&node);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cfg(test)]
|
||||||
|
mod test {
|
||||||
|
use super::*;
|
||||||
|
|
||||||
|
use std::fs::File;
|
||||||
|
|
||||||
|
struct MockRead;
|
||||||
|
|
||||||
|
impl Read for MockRead {
|
||||||
|
fn read(&mut self, buf: &mut [u8]) -> Result<usize, Error> {
|
||||||
|
Ok(1)
|
||||||
|
}
|
||||||
|
|
||||||
|
fn read_to_end(&mut self, buf: &mut Vec<u8>) -> Result<usize, Error> {
|
||||||
|
buf.extend_from_slice(b"<div></div>");
|
||||||
|
Ok(1)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn traversal() {
|
||||||
|
let mut traverser = Traverser::new();
|
||||||
|
let mut mock_data = MockRead;
|
||||||
|
// let mut file = File::open("src/test/div.html").unwrap();
|
||||||
|
traverser.traverse(&mut mock_data).unwrap();
|
||||||
|
assert!(false);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user