minify-html/rust/main/src/parse/script.rs

28 lines
790 B
Rust
Raw Normal View History

2021-08-05 22:07:27 -04:00
use aho_corasick::AhoCorasick;
use aho_corasick::AhoCorasickBuilder;
use lazy_static::lazy_static;
2021-08-06 02:17:45 -04:00
use crate::ast::{NodeData, ScriptOrStyleLang};
2021-08-05 22:07:27 -04:00
use crate::parse::content::ParsedContent;
2021-08-06 02:19:36 -04:00
use crate::parse::Code;
2021-08-05 22:07:27 -04:00
lazy_static! {
static ref END: AhoCorasick = AhoCorasickBuilder::new()
.ascii_case_insensitive(true)
.build(&["</script"]);
}
2021-08-06 03:54:23 -04:00
pub fn parse_script_content(code: &mut Code, lang: ScriptOrStyleLang) -> ParsedContent {
let (len, closing_tag_omitted) = match END.find(code.as_slice()) {
2021-08-05 22:07:27 -04:00
Some(m) => (m.start(), false),
None => (code.rem(), true),
};
ParsedContent {
closing_tag_omitted,
2021-08-06 02:19:36 -04:00
children: vec![NodeData::ScriptOrStyleContent {
code: code.copy_and_shift(len),
lang,
}],
2021-08-05 22:07:27 -04:00
}
}