improve minifycss script, strip comments - www.codemadness.org - www.codemadness.org saait content files
(HTM) git clone git://git.codemadness.org/www.codemadness.org
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) README
(DIR) LICENSE
---
(DIR) commit 4d19acac6930894181fc3438af9d62c961154d61
(DIR) parent 5ac4e6d5857f2481f47261e8871f13b386c5de6a
(HTM) Author: Hiltjo Posthuma <hiltjo@codemadness.org>
Date: Sat, 24 Jul 2021 13:34:48 +0200
improve minifycss script, strip comments
Sometimes it works. Not intended to be a fully correct CSS parser for
simplicity sake. Just for CSS I create.
Diffstat:
M scripts/minifycss.sh | 47 ++++++++++++++++++++++++++-----
1 file changed, 40 insertions(+), 7 deletions(-)
---
(DIR) diff --git a/scripts/minifycss.sh b/scripts/minifycss.sh
@@ -1,10 +1,43 @@
#!/bin/sh
# quick & dirty CSS minifier, sometimes it works(tm).
-sed -E \
- -e 's@^[[:space:]]*@@g' \
- -e 's@[[:space:]]*$@@g' | \
-tr -d '\n' | \
+
+#sed -E \
+# -e 's@^[[:space:]]*@@g' \
+# -e 's@[[:space:]]*$@@g' | \
+#tr -d '\n' | \
+#sed -E \
+# -e 's@([:,])[[:space:]]*@\1@g' \
+# -e 's@[[:space:]]*{@{@g'
+
tr -d '\r' | \
-sed -E \
- -e 's@([:,])[[:space:]]*@\1@g' \
- -e 's@[[:space:]]*{@{@g'
+awk '
+function stripcomments(s) {
+ for (rs = s; ;) {
+ if (!(start = index(rs, "/*")))
+ return rs;
+
+ cs = substr(rs, start + 2);
+ if (!(end = index(cs, "*/")))
+ return rs;
+ rs = substr(rs, 1, start - 1) substr(cs, end + 2);
+ }
+}
+{
+ line = $0;
+ gsub("^[[:space:]]*", "", line);
+ gsub("[[:space:]]*$", "", line);
+ data = data line;
+}
+END {
+ gsub(":[[:space:]]*", ":", data);
+ gsub(",[[:space:]]*", ":", data);
+ gsub("[[:space:]]*{", "{", data);
+
+ data = stripcomments(data);
+
+ # might break compatibility: last brace not needed.
+ #gsub(";}", "}", data);
+
+ printf("%s", data);
+}
+'