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);
       +}
       +'