minify_html/parse/
bang.rs

1use crate::ast::NodeData;
2use crate::parse::Code;
3use memchr::memchr;
4
5pub fn parse_bang(code: &mut Code) -> NodeData {
6  debug_assert!(code.as_slice().starts_with(b"<!"));
7  code.shift(2);
8  let (len, matched) = match memchr(b'>', code.as_slice()) {
9    Some(m) => (m, 1),
10    None => (code.rem(), 0),
11  };
12  let data = code.copy_and_shift(len);
13  // It might be EOF.
14  code.shift(matched);
15  NodeData::Bang {
16    code: data,
17    ended: matched > 0,
18  }
19}