minify_html/parse/
comment.rs1use crate::ast::NodeData;
2use crate::parse::Code;
3use aho_corasick::AhoCorasick;
4use aho_corasick::AhoCorasickBuilder;
5use once_cell::sync::Lazy;
6
7static COMMENT_END: Lazy<AhoCorasick> =
8 Lazy::new(|| AhoCorasickBuilder::new().build(["-->"]).unwrap());
9
10pub fn parse_comment(code: &mut Code) -> NodeData {
11 debug_assert!(code.as_slice().starts_with(b"<!--"));
12 code.shift(4);
13 let (len, matched) = match COMMENT_END.find(code.as_slice()) {
14 Some(m) => (m.start(), m.end() - m.start()),
15 None => (code.rem(), 0),
16 };
17 let data = code.copy_and_shift(len);
18 code.shift(matched);
20 NodeData::Comment {
21 code: data,
22 ended: matched > 0,
23 }
24}