From 76b4709d1ac7b815fc0d70d3b6d6f337d16e05b2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mike=20Schw=C3=B6rer=20=28Macbook=29?= Date: Thu, 16 Jan 2020 10:07:14 +0100 Subject: [PATCH] cleanup compress.py --- data/css_compress/compress.py | 151 +++++++++++++++++----------------- 1 file changed, 77 insertions(+), 74 deletions(-) diff --git a/data/css_compress/compress.py b/data/css_compress/compress.py index 6072e02..0dd97db 100644 --- a/data/css_compress/compress.py +++ b/data/css_compress/compress.py @@ -2,78 +2,83 @@ import sys import os -from subprocess import call import re import subprocess -def findnext(str, start, chr): - depth = 0 - for i in range(start, len(str)): - if (str[i] == chr): return i; -def findclose(str, start): +def findnext(strdata, start, searchchr): depth = 0 - for i in range(start, len(str)): - if (str[i] == '{'): depth = depth+1; - if (str[i] == '}'): depth = depth-1; - if (depth == 0): return i; + for i in range(start, len(strdata)): + if strdata[i] == searchchr: return i; -def countnl(str, start, end): + +def findclose(strdata, start): + depth = 0 + for i in range(start, len(strdata)): + if strdata[i] == '{': depth = depth + 1; + if strdata[i] == '}': depth = depth - 1; + if depth == 0: return i; + + +def countnl(strdata, start, end): cnt = 0 - for i in range(start, end+1): - if (str[i] == '\n'): cnt = cnt+1; - return cnt; + for i in range(start, end + 1): + if strdata[i] == '\n': cnt = cnt + 1; + return cnt + def comment_remover(text): def replacer(match): s = match.group(0) if s.startswith('/'): - return " " # note: a space and not an empty string + return " " # note: a space and not an empty string else: return s + pattern = re.compile( r'//.*?$|/\*.*?\*/|\'(?:\\.|[^\\\'])*\'|"(?:\\.|[^\\"])*"', re.DOTALL | re.MULTILINE ) return re.sub(pattern, replacer, text) + fsource = str.replace(sys.argv[1], '\\', '/') # scss -finput = str.replace(sys.argv[2], '\\', '/') # css +finput = str.replace(sys.argv[2], '\\', '/') # css foutput = str.replace(sys.argv[3], '\\', '/') # min.css -ftemp1 = '__temp_compresss_py_1.tmp.css'; -ftemp2 = '__temp_compresss_py_2.tmp.css'; +ftemp1 = '__temp_compresss_py_1.tmp.css' +ftemp2 = '__temp_compresss_py_2.tmp.css' -print('======== INPUT ========'); -print(); -print(fsource); -print(finput); -print(foutput); -print(); -print(); +print('======== INPUT ========') +print() +print(fsource) +print(finput) +print(foutput) +print() +print() -print('======== DELETE OLD DATA ========'); +print('======== DELETE OLD DATA ========') if os.path.isfile(finput): - try: - os.remove(finput); - print(finput + ' deleted') - except: - print(sys.exc_info()[0]) + try: + os.remove(finput) + print(finput + ' deleted') + except: + print(sys.exc_info()[0]) else: - print(finput + ' does not exist') + print(finput + ' does not exist') if os.path.isfile(foutput): - try: - os.remove(foutput); - print(foutput + ' deleted') - except: - print(sys.exc_info()[0]) + try: + os.remove(foutput) + print(foutput + ' deleted') + except: + print(sys.exc_info()[0]) else: - print(foutput + ' does not exist') -print(); -print(); + print(foutput + ' does not exist') +print() +print() - -print('======== CALL SCSS ========'); -out = subprocess.run(['ruby', 'scss', '--style=expanded', '--no-cache', '--update', fsource + ':' + finput], stdout=subprocess.PIPE, stderr=subprocess.PIPE) +print('======== CALL SCSS ========') +out = subprocess.run(['ruby', 'scss', '--style=expanded', '--no-cache', '--update', fsource + ':' + finput], + stdout=subprocess.PIPE, stderr=subprocess.PIPE) print('> scss.bat --style=expanded --no-cache --update ' + fsource + ':' + finput) print('STDOUT:') print(out.stdout.decode('utf-8')) @@ -83,13 +88,13 @@ print(out.stderr.decode('utf-8')) print('') print('') -print('======== CLEANUP COMMENTS ========'); +print('======== CLEANUP COMMENTS ========') with open(finput, 'r') as tf: data1 = tf.read() print(str(len(data1)) + ' characters read from ' + os.path.basename(finput)) data1 = comment_remover(data1) -print('Comments in css removed'); +print('Comments in css removed') with open(ftemp1, "w") as tf: tf.write(data1) @@ -98,19 +103,19 @@ with open(ftemp1, "w") as tf: print('') print('') - -print('======== CALL YUI ========'); -out = subprocess.run(['java', '-jar', 'yuicompressor.jar', '--verbose', ftemp1, '-o', ftemp2], stdout=subprocess.PIPE, stderr=subprocess.PIPE) -print('> java -jar yuicompressor.jar --verbose "'+finput+'" -o "'+ftemp2+'"') -print('STDOUT:'); +print('======== CALL YUI ========') +out = subprocess.run(['java', '-jar', 'yuicompressor.jar', '--verbose', ftemp1, '-o', ftemp2], stdout=subprocess.PIPE, + stderr=subprocess.PIPE) +print('> java -jar yuicompressor.jar --verbose "' + finput + '" -o "' + ftemp2 + '"') +print('STDOUT:') print(out.stdout.decode('utf-8')) -print('STDERR:'); +print('STDERR:') print(out.stderr.decode('utf-8')) print('') print('') -print('======== READ ========'); +print('======== READ ========') with open(ftemp2, 'r') as tf: data = tf.read() print(str(len(data)) + ' characters read from ' + ftemp2) @@ -118,11 +123,11 @@ with open(ftemp2, 'r') as tf: print('') print('') -print('======== REM ========'); +print('======== REM ========') try: - os.remove(ftemp1); + os.remove(ftemp1) print(ftemp1 + ' deleted') - os.remove(ftemp2); + os.remove(ftemp2) print(ftemp2 + ' deleted') except: print(sys.exc_info()[0]) @@ -130,30 +135,29 @@ except: print('') print('') -print('======== REGEX ========'); -data = re.sub(r'(\}*\})', '\g<1>\n', data); +print('======== REGEX ========') +data = re.sub(r'(\}*\})', '\g<1>\n', data) print('css data modified (1)') print('') print('') -print('======== MEDIA ========'); +print('======== MEDIA ========') ins = [] for i in range(len(data)): if data[i:].startswith('@media'): - copen = findnext(data, i, '{') cclose = findclose(data, copen) - if (countnl(data, copen, cclose) == 0): continue; + if countnl(data, copen, cclose) == 0: continue; - ins.append( (copen+1, '\n\t') ) - for i in range(copen+1, cclose): - if data[i] == '\n': - tp =(i+1, '\t') - ins.append( tp ) + ins.append((copen + 1, '\n\t')) + for i2 in range(copen + 1, cclose): + if data[i2] == '\n': + tp = (i2 + 1, '\t') + ins.append(tp) ins.append((cclose, '\n')) print('media query at idx:' + str(i) + ' formatted') @@ -163,7 +167,7 @@ for (l, c) in reversed(ins): print('') print('') -print('======== WRITE ========'); +print('======== WRITE ========') with open(foutput, "w") as tf: tf.write(data) print(str(len(data)) + ' characters written to ' + foutput) @@ -171,18 +175,17 @@ with open(foutput, "w") as tf: print('') print('') -print('======== REMOVE MAP ========'); +print('======== REMOVE MAP ========') if os.path.isfile(finput + '.map'): - try: - os.remove(finput + '.map'); - print(finput + '.map' + ' deleted') - except e: - print(e) + try: + os.remove(finput + '.map') + print(finput + '.map' + ' deleted') + except Exception as e: + print(e) else: - print(finput + '.map' + ' does not exist') + print(finput + '.map' + ' does not exist') print('') print('') - print('Finished.')