abstract class BaseCompressorFilter

Base YUI compressor filter.

@link http://developer.yahoo.com/yui/compressor/ @author Kris Wallsmith <kris.wallsmith@gmail.com>

Hierarchy

Expanded class hierarchy of BaseCompressorFilter

1 file declares its use of BaseCompressorFilter
BaseCompressorFilterTest.php in drupal/core/vendor/kriswallsmith/assetic/tests/Assetic/Test/Filter/Yui/BaseCompressorFilterTest.php

File

drupal/core/vendor/kriswallsmith/assetic/src/Assetic/Filter/Yui/BaseCompressorFilter.php, line 25

Namespace

Assetic\Filter\Yui
View source
abstract class BaseCompressorFilter implements FilterInterface {
  private $jarPath;
  private $javaPath;
  private $charset;
  private $lineBreak;
  public function __construct($jarPath, $javaPath = '/usr/bin/java') {
    $this->jarPath = $jarPath;
    $this->javaPath = $javaPath;
  }
  public function setCharset($charset) {
    $this->charset = $charset;
  }
  public function setLineBreak($lineBreak) {
    $this->lineBreak = $lineBreak;
  }
  public function filterLoad(AssetInterface $asset) {
  }

  /**
   * Compresses a string.
   *
   * @param string $content The content to compress
   * @param string $type    The type of content, either "js" or "css"
   * @param array  $options An indexed array of additional options
   *
   * @return string The compressed content
   */
  protected function compress($content, $type, $options = array()) {
    $pb = new ProcessBuilder(array(
      $this->javaPath,
      '-jar',
      $this->jarPath,
    ));
    foreach ($options as $option) {
      $pb
        ->add($option);
    }
    if (null !== $this->charset) {
      $pb
        ->add('--charset')
        ->add($this->charset);
    }
    if (null !== $this->lineBreak) {
      $pb
        ->add('--line-break')
        ->add($this->lineBreak);
    }

    // input and output files
    $tempDir = realpath(sys_get_temp_dir());
    $input = tempnam($tempDir, 'YUI-IN-');
    $output = tempnam($tempDir, 'YUI-OUT-');
    file_put_contents($input, $content);
    $pb
      ->add('-o')
      ->add($output)
      ->add('--type')
      ->add($type)
      ->add($input);
    $proc = $pb
      ->getProcess();
    $code = $proc
      ->run();
    unlink($input);
    if (0 < $code) {
      if (file_exists($output)) {
        unlink($output);
      }
      throw FilterException::fromProcess($proc)
        ->setInput($content);
    }
    elseif (!file_exists($output)) {
      throw new \RuntimeException('Error creating output file.');
    }
    $retval = file_get_contents($output);
    unlink($output);
    return $retval;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
BaseCompressorFilter::$charset private property
BaseCompressorFilter::$jarPath private property
BaseCompressorFilter::$javaPath private property
BaseCompressorFilter::$lineBreak private property
BaseCompressorFilter::compress protected function Compresses a string.
BaseCompressorFilter::filterLoad public function Filters an asset after it has been loaded. Overrides FilterInterface::filterLoad
BaseCompressorFilter::setCharset public function
BaseCompressorFilter::setLineBreak public function
BaseCompressorFilter::__construct public function
FilterInterface::filterDump public function Filters an asset just before it's dumped. 30