fixed parser bug
This commit is contained in:
parent
58bcf60567
commit
a07d893e6e
4 changed files with 37 additions and 4 deletions
|
|
@ -6,9 +6,10 @@ use std::{
|
|||
|
||||
use anyhow::Result;
|
||||
use kuchikiki::NodeRef;
|
||||
use markup5ever::{LocalName, Namespace, QualName};
|
||||
use markup5ever::{ns, LocalName, Namespace, namespace_url, QualName};
|
||||
use tendril::TendrilSink;
|
||||
|
||||
|
||||
pub fn read_doc_from_file(path: PathBuf) -> Result<NodeRef> {
|
||||
let mut file = File::open(path)?;
|
||||
let mut reader = BufReader::new(&mut file);
|
||||
|
|
@ -26,7 +27,7 @@ pub fn read_doc_from_file(path: PathBuf) -> Result<NodeRef> {
|
|||
if is_whole_doc {
|
||||
Ok(kuchikiki::parse_html().one(page_string))
|
||||
} else {
|
||||
let ctx_name = QualName::new(None, Namespace::from("http://www.w3.org/1999/xhtml"), LocalName::from("div"));
|
||||
let ctx_name = QualName::new(None, ns!(), LocalName::from("div"));
|
||||
Ok(kuchikiki::parse_fragment(ctx_name, Vec::new()).one(page_string))
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -215,6 +215,7 @@ pub fn generate_footnotes(document: NodeRef) -> Result<NodeRef> {
|
|||
#[cfg(test)]
|
||||
mod tests {
|
||||
use httptest::{Expectation, ServerPool, matchers::*, responders::*};
|
||||
use markup5ever::{ns, namespace_url};
|
||||
|
||||
use super::*;
|
||||
|
||||
|
|
@ -346,7 +347,6 @@ mod tests {
|
|||
let document = kuchikiki::parse_html().one(page);
|
||||
let d = execute_lua(expand_template(document, &p, None).unwrap()).unwrap();
|
||||
let text = d.select_first("span").unwrap().as_node().text_contents();
|
||||
println!("{}", d.to_string());
|
||||
assert_eq!(text, "Test from Lua!\n");
|
||||
assert!(d.select_first("lua").is_err());
|
||||
let text = d.select_first("#inc1").unwrap().as_node().text_contents();
|
||||
|
|
@ -404,6 +404,27 @@ mod tests {
|
|||
assert!(d.select_first("includeelement").is_err());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn include_base() {
|
||||
let page = r#"
|
||||
<include path="include_base.html">
|
||||
<exportelement class="t"><title>title_test</title></exportelement>
|
||||
<exportelement class="b"><span id="tb">body_el</span></exportelement>
|
||||
</include>
|
||||
"#;
|
||||
let mut p = PathBuf::from(env!("CARGO_MANIFEST_DIR"));
|
||||
p.push("tests/components");
|
||||
let ctx_name = QualName::new(None, ns!(html), LocalName::from("div"));
|
||||
let document = kuchikiki::parse_fragment(ctx_name, Vec::new()).one(page);
|
||||
let d = expand_template(document, &p, None).unwrap();
|
||||
let text = d.select_first("head").unwrap().as_node().select_first("title").unwrap().as_node().text_contents();
|
||||
assert_eq!(text, "title_test");
|
||||
let text = d.select_first("#tb").unwrap().as_node().text_contents();
|
||||
assert_eq!(text, "body_el");
|
||||
assert!(d.select_first("exportelement").is_err());
|
||||
assert!(d.select_first("includeelement").is_err());
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn footnotes() {
|
||||
let page = r"
|
||||
|
|
|
|||
9
htmlua-parser/tests/components/include_base.html
Normal file
9
htmlua-parser/tests/components/include_base.html
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<html>
|
||||
<head>
|
||||
<includeelement name="t"></includeelement>
|
||||
</head>
|
||||
<body>
|
||||
<h1>Hello World</h1>
|
||||
<includeelement name="b"></includeelement>
|
||||
</body>
|
||||
</html>
|
||||
Loading…
Add table
Add a link
Reference in a new issue