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;
|
|
|
|
use crate::Cfg;
|
2021-08-05 22:07:27 -04:00
|
|
|
|
|
|
|
lazy_static! {
|
|
|
|
static ref END: AhoCorasick = AhoCorasickBuilder::new()
|
|
|
|
.ascii_case_insensitive(true)
|
|
|
|
.build(&["</style"]);
|
|
|
|
}
|
|
|
|
|
|
|
|
pub fn parse_style_content(cfg: &Cfg, code: &mut Code) -> ParsedContent {
|
|
|
|
let (len, closing_tag_omitted) = match END.find(code.str()) {
|
|
|
|
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: ScriptOrStyleLang::CSS,
|
|
|
|
}],
|
2021-08-05 22:07:27 -04:00
|
|
|
}
|
|
|
|
}
|