Trim script and style elements
This commit is contained in:
parent
b0bba546ce
commit
ca30897dae
|
@ -1,14 +1,18 @@
|
||||||
#!/usr/bin/env bash
|
#!/usr/bin/env bash
|
||||||
|
|
||||||
set -Eeuo pipefail
|
set -Eeo pipefail
|
||||||
|
|
||||||
pushd "$(dirname "$0")" >/dev/null
|
pushd "$(dirname "$0")" >/dev/null
|
||||||
|
|
||||||
cargo build --manifest-path c14n/Cargo.toml --release
|
cargo build --manifest-path c14n/Cargo.toml --release
|
||||||
|
cargo build --manifest-path charlines/Cargo.toml --release
|
||||||
|
|
||||||
for f in outputs/*/*; do
|
for f in outputs/*/*; do
|
||||||
src=$(cat "$f")
|
out=$(c14n/target/release/c14n < "$f")
|
||||||
c14n/target/release/c14n <<< "$src" > "$f"
|
if [[ "$CHARLINES" == "1" ]]; then
|
||||||
|
out=$(charlines/target/release/charlines <<< "$out")
|
||||||
|
fi
|
||||||
|
cat <<< "$out" > "$f"
|
||||||
done
|
done
|
||||||
|
|
||||||
popd >/dev/null
|
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 \
|
bench/runners/minify-html-onepass \
|
||||||
cli \
|
cli \
|
||||||
debug/diff/c14n \
|
debug/diff/c14n \
|
||||||
|
debug/diff/charlines \
|
||||||
fuzz \
|
fuzz \
|
||||||
fuzz/process \
|
fuzz/process \
|
||||||
java \
|
java \
|
||||||
|
|
|
@ -1,5 +1,19 @@
|
||||||
use crate::common::gen::codepoints::WHITESPACE;
|
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>) {
|
pub fn left_trim(val: &mut Vec<u8>) {
|
||||||
let mut len = 0;
|
let mut len = 0;
|
||||||
while val.get(len).filter(|&&c| WHITESPACE[c]).is_some() {
|
while val.get(len).filter(|&&c| WHITESPACE[c]).is_some() {
|
||||||
|
|
|
@ -9,6 +9,7 @@ use {
|
||||||
};
|
};
|
||||||
|
|
||||||
use crate::cfg::Cfg;
|
use crate::cfg::Cfg;
|
||||||
|
use crate::common::whitespace::trimmed;
|
||||||
|
|
||||||
#[cfg(feature = "js-esbuild")]
|
#[cfg(feature = "js-esbuild")]
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
|
@ -27,13 +28,13 @@ lazy_static! {
|
||||||
|
|
||||||
#[cfg(not(feature = "js-esbuild"))]
|
#[cfg(not(feature = "js-esbuild"))]
|
||||||
pub fn minify_css(_cfg: &Cfg, out: &mut Vec<u8>, code: &[u8]) {
|
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")]
|
#[cfg(feature = "js-esbuild")]
|
||||||
pub fn minify_css(cfg: &Cfg, out: &mut Vec<u8>, code: &[u8]) {
|
pub fn minify_css(cfg: &Cfg, out: &mut Vec<u8>, code: &[u8]) {
|
||||||
if !cfg.minify_css {
|
if !cfg.minify_css {
|
||||||
out.extend_from_slice(&code);
|
out.extend_from_slice(trimmed(code));
|
||||||
} else {
|
} else {
|
||||||
minify_using_esbuild(out, code, &MINIFY_CSS_TRANSFORM_OPTIONS.clone());
|
minify_using_esbuild(out, code, &MINIFY_CSS_TRANSFORM_OPTIONS.clone());
|
||||||
}
|
}
|
||||||
|
|
|
@ -6,7 +6,8 @@ use {
|
||||||
std::sync::Arc,
|
std::sync::Arc,
|
||||||
};
|
};
|
||||||
|
|
||||||
use crate::Cfg;
|
use crate::cfg::Cfg;
|
||||||
|
use crate::common::whitespace::trimmed;
|
||||||
|
|
||||||
#[cfg(feature = "js-esbuild")]
|
#[cfg(feature = "js-esbuild")]
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
|
@ -24,13 +25,13 @@ lazy_static! {
|
||||||
|
|
||||||
#[cfg(not(feature = "js-esbuild"))]
|
#[cfg(not(feature = "js-esbuild"))]
|
||||||
pub fn minify_js(_cfg: &Cfg, out: &mut Vec<u8>, code: &[u8]) {
|
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")]
|
#[cfg(feature = "js-esbuild")]
|
||||||
pub fn minify_js(cfg: &Cfg, out: &mut Vec<u8>, code: &[u8]) {
|
pub fn minify_js(cfg: &Cfg, out: &mut Vec<u8>, code: &[u8]) {
|
||||||
if !cfg.minify_js {
|
if !cfg.minify_js {
|
||||||
out.extend_from_slice(&code);
|
out.extend_from_slice(trimmed(code));
|
||||||
} else {
|
} else {
|
||||||
minify_using_esbuild(out, code, &TRANSFORM_OPTIONS.clone());
|
minify_using_esbuild(out, code, &TRANSFORM_OPTIONS.clone());
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue