aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--cspell.json4
-rw-r--r--htmlua-parser/src/helpers.rs5
-rw-r--r--htmlua-parser/src/render.rs23
-rw-r--r--htmlua-parser/tests/components/include_base.html9
4 files changed, 37 insertions, 4 deletions
diff --git a/cspell.json b/cspell.json
index e8c260e..44ee262 100644
--- a/cspell.json
+++ b/cspell.json
@@ -2,7 +2,9 @@
"words": [
"htmlua",
"headermap",
- "reqwest"
+ "reqwest",
+ "includeelement",
+ "exportelement"
],
"userWords": [
"mlua"
diff --git a/htmlua-parser/src/helpers.rs b/htmlua-parser/src/helpers.rs
index bd99f81..3db0443 100644
--- a/htmlua-parser/src/helpers.rs
+++ b/htmlua-parser/src/helpers.rs
@@ -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))
}
}
diff --git a/htmlua-parser/src/render.rs b/htmlua-parser/src/render.rs
index 7046db8..e141020 100644
--- a/htmlua-parser/src/render.rs
+++ b/htmlua-parser/src/render.rs
@@ -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();
@@ -405,6 +405,27 @@ mod tests {
}
#[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"
<!DOCTYPE html>
diff --git a/htmlua-parser/tests/components/include_base.html b/htmlua-parser/tests/components/include_base.html
new file mode 100644
index 0000000..fa86fe6
--- /dev/null
+++ b/htmlua-parser/tests/components/include_base.html
@@ -0,0 +1,9 @@
+<html>
+ <head>
+ <includeelement name="t"></includeelement>
+ </head>
+ <body>
+ <h1>Hello World</h1>
+ <includeelement name="b"></includeelement>
+ </body>
+</html>