minify-html/src/unit/script.rs

31 lines
922 B
Rust
Raw Normal View History

2020-07-03 06:37:52 -04:00
use lazy_static::lazy_static;
use regex::bytes::Regex;
use crate::err::ProcessingResult;
2020-01-25 02:04:02 -05:00
use crate::proc::MatchAction::*;
use crate::proc::MatchMode::*;
2020-01-25 02:07:52 -05:00
use crate::proc::Processor;
use esbuild_rs::esbuild;
use crate::cfg::Cfg;
use std::string::String;
2020-07-03 06:37:52 -04:00
static SCRIPT_END_STR: &'static str = "</script";
lazy_static! {
static ref SCRIPT_END: Regex = Regex::new(SCRIPT_END_STR).unwrap();
}
pub fn process_script(proc: &mut Processor, cfg: &Cfg) -> ProcessingResult<()> {
// `process_tag` will require closing tag.
let code = proc.m(WhileNotPat(&SCRIPT_END, SCRIPT_END_STR.len()), Discard);
if cfg.minify_js {
let code_str = unsafe { String::from_utf8_unchecked(proc[code].to_vec()) };
let min = esbuild(&code_str).trim().as_bytes();
if min.len() < code.len() {
proc.write_slice(min);
return Ok(());
};
};
proc.write_range(code);
Ok(())
}