3 from django.conf import settings
5 from compress.filter_base import FilterBase, FilterError
7 BINARY = getattr(settings, 'COMPRESS_YUI_BINARY', 'java -jar yuicompressor.jar')
8 CSS_ARGUMENTS = getattr(settings, 'COMPRESS_YUI_CSS_ARGUMENTS', '')
9 JS_ARGUMENTS = getattr(settings, 'COMPRESS_YUI_JS_ARGUMENTS', '')
12 class YUICompressorFilter(FilterBase):
14 def filter_common(self, content, type_, arguments):
15 command = '%s --type=%s %s' % (BINARY, type_, arguments)
18 command += ' --verbose'
20 p = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE)
21 p.stdin.write(content)
24 filtered_css = p.stdout.read()
32 err = 'Unable to apply YUI Compressor filter'
34 raise FilterError(err)
41 def filter_js(self, js):
42 return self.filter_common(js, 'js', JS_ARGUMENTS)
44 def filter_css(self, css):
45 return self.filter_common(css, 'css', CSS_ARGUMENTS)