archive
/
md-pdf-rs
Archived
1
Fork 0
This repository has been archived on 2023-03-26. You can view files and clone it, but cannot push or open issues or pull requests.
md-pdf-rs/src/html.rs

54 lines
1.5 KiB
Rust
Raw Permalink Normal View History

2017-09-05 21:33:13 +01:00
use sciter::{Window, Element};
2017-09-01 21:49:39 +01:00
use std::ops::Deref;
2017-09-01 21:49:39 +01:00
2017-09-06 18:20:45 +01:00
pub fn get_root(frame: Window) -> Element {
2017-09-01 21:49:39 +01:00
return frame.get_host().deref().get_root().expect("Failed to get root of window");
}
2017-09-06 18:20:45 +01:00
pub fn sciter_start(source: String) -> Element {
2017-09-01 21:49:39 +01:00
let mut frame = Window::new();
frame.load_html(&source.as_bytes(), None);
return get_root(frame);
}
2017-09-06 18:20:45 +01:00
pub fn get_html(element: Element) -> String {
2017-09-05 21:36:41 +01:00
element.update(true).expect("Failed to update");
2017-09-01 22:37:54 +01:00
return String::from_utf8(element.get_html(true)).expect(&format!(
"Failed to get HTML from {}.",
element.get_tag()
));
}
2017-09-06 18:20:45 +01:00
pub fn find_all(root: &mut Element, selector: &str) -> Vec<Element> {
2017-09-05 21:33:13 +01:00
let elements = root.find_all(selector).expect(&format!("Failed to get {}.", selector));
if elements.is_none() {
return Vec::new();
}
return elements.unwrap();
}
2017-09-06 18:20:45 +01:00
pub fn find_first(root: &mut Element, selector: &str) -> Element {
2017-09-05 21:33:13 +01:00
let mut all_matches = find_all(root, selector);
all_matches.reverse();
return all_matches.pop().expect(&format!("Failed to find {}.", selector));
}
2017-09-06 18:20:45 +01:00
pub fn destroy_matching(root: &mut Element, selector: &str) {
2017-09-05 21:33:13 +01:00
let matches = find_all(root, selector);
if matches.is_empty() {
2017-09-01 22:37:54 +01:00
return;
}
2017-09-05 21:33:13 +01:00
for mut ele in matches {
2017-09-01 22:37:54 +01:00
ele.destroy().expect("Failed to delete");
}
2017-09-01 21:49:39 +01:00
}
2017-09-06 17:52:39 +01:00
2017-09-06 18:20:45 +01:00
pub fn get_head(root: &mut Element) -> Element {
2017-09-06 17:52:39 +01:00
return find_first(root, "head");
}
2017-09-06 18:20:45 +01:00
pub fn get_body(root: &mut Element) -> Element {
2017-09-06 17:52:39 +01:00
return find_first(root, "body");
}