Simplify minifier

fixes #1744
This commit is contained in:
Ruud
2013-05-17 12:30:48 +02:00
parent 2b75153148
commit 0e1cea1034
58 changed files with 236 additions and 17924 deletions
+34 -2
View File
@@ -4,9 +4,11 @@ from couchpotato.core.helpers.variable import tryInt
from couchpotato.core.logger import CPLog
from couchpotato.core.plugins.base import Plugin
from couchpotato.environment import Env
from minify.cssmin import cssmin
from minify.jsmin import jsmin
import cssprefixer
import os
import re
import time
import traceback
log = CPLog(__name__)
@@ -102,6 +104,8 @@ class ClientScript(Plugin):
out_name = 'minified_' + out
out = os.path.join(cache, out_name)
start = time.time()
raw = []
for file_path in files:
f = open(file_path, 'r').read()
@@ -109,13 +113,16 @@ class ClientScript(Plugin):
if file_type == 'script':
data = jsmin(f)
else:
data = cssprefixer.process(f, debug = False, minify = True)
data = self.prefix(f)
data = cssmin(f)
data = data.replace('../images/', '../static/images/')
data = data.replace('../fonts/', '../static/fonts/')
data = data.replace('../../static/', '../static/') # Replace inside plugins
raw.append({'file': file_path, 'date': int(os.path.getmtime(file_path)), 'data': data})
print file_type, time.time() - start
# Combine all files together with some comments
data = ''
for r in raw:
@@ -170,3 +177,28 @@ class ClientScript(Plugin):
if not self.paths[type].get(location):
self.paths[type][location] = []
self.paths[type][location].append(file_path)
prefix_properties = ['border-radius', 'transform', 'transition', 'box-shadow']
prefix_tags = ['ms', 'moz', 'webkit']
def prefix(self, data):
trimmed_data = re.sub('(\t|\n|\r)+', '', data)
new_data = ''
colon_split = trimmed_data.split(';')
for splt in colon_split:
curl_split = splt.strip().split('{')
for curly in curl_split:
curly = curly.strip()
for prop in self.prefix_properties:
if curly[:len(prop) + 1] == prop + ':':
for tag in self.prefix_tags:
new_data += ' -%s-%s; ' % (tag, curly)
new_data += curly + (' { ' if len(curl_split) > 1 else ' ')
new_data += '; '
new_data = new_data.replace('{ ;', '; ').replace('} ;', '} ')
return new_data