Trim script and style elements
This commit is contained in:
parent
b0bba546ce
commit
ca30897dae
|
@ -1,14 +1,18 @@
|
|||
#!/usr/bin/env bash
|
||||
|
||||
set -Eeuo pipefail
|
||||
set -Eeo pipefail
|
||||
|
||||
pushd "$(dirname "$0")" >/dev/null
|
||||
|
||||
cargo build --manifest-path c14n/Cargo.toml --release
|
||||
cargo build --manifest-path charlines/Cargo.toml --release
|
||||
|
||||
for f in outputs/*/*; do
|
||||
src=$(cat "$f")
|
||||
c14n/target/release/c14n <<< "$src" > "$f"
|
||||
out=$(c14n/target/release/c14n < "$f")
|
||||
if [[ "$CHARLINES" == "1" ]]; then
|
||||
out=$(charlines/target/release/charlines <<< "$out")
|
||||
fi
|
||||
cat <<< "$out" > "$f"
|
||||
done
|
||||
|
||||
popd >/dev/null
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
/Cargo.lock
|
||||
/target/
|
|
@ -0,0 +1,5 @@
|
|||
[package]
|
||||
publish = false
|
||||
name = "charlines"
|
||||
version = "0.0.1"
|
||||
edition = "2018"
|
|
@ -0,0 +1,3 @@
|
|||
# charlines
|
||||
|
||||
Output each character from stdin onto its own stdout line. Useful for subsequence diffing when text does not naturally have a lot of line breaks (e.g. minified HTML).
|
|
@ -0,0 +1,10 @@
|
|||
use std::io::{stdin, stdout, Read, Write};
|
||||
|
||||
fn main() {
|
||||
let mut src = Vec::new();
|
||||
stdin().read_to_end(&mut src).unwrap();
|
||||
let mut out = stdout();
|
||||
for c in src {
|
||||
out.write_all(&[c, b'\n']).unwrap();
|
||||
}
|
||||
}
|
1
format
1
format
|
@ -11,6 +11,7 @@ for dir in \
|
|||
bench/runners/minify-html-onepass \
|
||||
cli \
|
||||
debug/diff/c14n \
|
||||
debug/diff/charlines \
|
||||
fuzz \
|
||||
fuzz/process \
|
||||
java \
|
||||
|
|
|
@ -1,5 +1,19 @@
|
|||
use crate::common::gen::codepoints::WHITESPACE;
|
||||
|
||||
pub fn trimmed(val: &[u8]) -> &[u8] {
|
||||
let mut start = 0;
|
||||
while val.get(start).filter(|&&c| WHITESPACE[c]).is_some() {
|
||||
start += 1;
|
||||
}
|
||||
|
||||
let mut end = val.len();
|
||||
while end > start && val.get(end - 1).filter(|&&c| WHITESPACE[c]).is_some() {
|
||||
end -= 1;
|
||||
}
|
||||
|
||||
&val[start..end]
|
||||
}
|
||||
|
||||
pub fn left_trim(val: &mut Vec<u8>) {
|
||||
let mut len = 0;
|
||||
while val.get(len).filter(|&&c| WHITESPACE[c]).is_some() {
|
||||
|
|
|
@ -9,6 +9,7 @@ use {
|
|||
};
|
||||
|
||||
use crate::cfg::Cfg;
|
||||
use crate::common::whitespace::trimmed;
|
||||
|
||||
#[cfg(feature = "js-esbuild")]
|
||||
lazy_static! {
|
||||
|
@ -27,13 +28,13 @@ lazy_static! {
|
|||
|
||||
#[cfg(not(feature = "js-esbuild"))]
|
||||
pub fn minify_css(_cfg: &Cfg, out: &mut Vec<u8>, code: &[u8]) {
|
||||
out.extend_from_slice(&code);
|
||||
out.extend_from_slice(trimmed(code));
|
||||
}
|
||||
|
||||
#[cfg(feature = "js-esbuild")]
|
||||
pub fn minify_css(cfg: &Cfg, out: &mut Vec<u8>, code: &[u8]) {
|
||||
if !cfg.minify_css {
|
||||
out.extend_from_slice(&code);
|
||||
out.extend_from_slice(trimmed(code));
|
||||
} else {
|
||||
minify_using_esbuild(out, code, &MINIFY_CSS_TRANSFORM_OPTIONS.clone());
|
||||
}
|
||||
|
|
|
@ -6,7 +6,8 @@ use {
|
|||
std::sync::Arc,
|
||||
};
|
||||
|
||||
use crate::Cfg;
|
||||
use crate::cfg::Cfg;
|
||||
use crate::common::whitespace::trimmed;
|
||||
|
||||
#[cfg(feature = "js-esbuild")]
|
||||
lazy_static! {
|
||||
|
@ -24,13 +25,13 @@ lazy_static! {
|
|||
|
||||
#[cfg(not(feature = "js-esbuild"))]
|
||||
pub fn minify_js(_cfg: &Cfg, out: &mut Vec<u8>, code: &[u8]) {
|
||||
out.extend_from_slice(&code);
|
||||
out.extend_from_slice(trimmed(code));
|
||||
}
|
||||
|
||||
#[cfg(feature = "js-esbuild")]
|
||||
pub fn minify_js(cfg: &Cfg, out: &mut Vec<u8>, code: &[u8]) {
|
||||
if !cfg.minify_js {
|
||||
out.extend_from_slice(&code);
|
||||
out.extend_from_slice(trimmed(code));
|
||||
} else {
|
||||
minify_using_esbuild(out, code, &TRANSFORM_OPTIONS.clone());
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue