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)