--- /dev/null
+import subprocess
+
+from django.conf import settings
+
+from compress.filter_base import FilterBase, FilterError
+
+BINARY = getattr(settings, 'COMPRESS_YUI_BINARY', 'java -jar yuicompressor.jar')
+CSS_ARGUMENTS = getattr(settings, 'COMPRESS_YUI_CSS_ARGUMENTS', '')
+JS_ARGUMENTS = getattr(settings, 'COMPRESS_YUI_JS_ARGUMENTS', '')
+
+class YUICompressorFilter(FilterBase):
+
+ def filter_common(self, content, type_, arguments):
+ command = '%s --type=%s %s' % (BINARY, type_, arguments)
+
+ if self.verbose:
+ command += ' --verbose'
+
+ p = subprocess.Popen(command, shell=True, stdout=subprocess.PIPE, stdin=subprocess.PIPE, stderr=subprocess.PIPE)
+ p.stdin.write(content)
+ p.stdin.close()
+
+ filtered_css = p.stdout.read()
+ p.stdout.close()
+
+ err = p.stderr.read()
+ p.stderr.close()
+
+ if p.wait() != 0:
+ if not err:
+ err = 'Unable to apply YUI Compressor filter'
+
+ raise FilterError(err)
+
+ if self.verbose:
+ print err
+
+ return filtered_css
+
+ def filter_js(self, js):
+ return self.filter_common(js, 'js', JS_ARGUMENTS)
+
+ def filter_css(self, css):
+ return self.filter_common(css, 'css', CSS_ARGUMENTS)
\ No newline at end of file