*/ class CoffeeScriptFilter implements FilterInterface { private $coffeePath; private $nodePath; // coffee options private $bare; public function __construct($coffeePath = '/usr/bin/coffee', $nodePath = '/usr/bin/node') { $this->coffeePath = $coffeePath; $this->nodePath = $nodePath; } public function setBare($bare) { $this->bare = $bare; } public function filterLoad(AssetInterface $asset) { $input = tempnam(sys_get_temp_dir(), 'assetic_coffeescript'); file_put_contents($input, $asset->getContent()); $pb = new ProcessBuilder(array( $this->nodePath, $this->coffeePath, '-cp', )); if ($this->bare) { $pb->add('--bare'); } $pb->add($input); $proc = $pb->getProcess(); $code = $proc->run(); unlink($input); if (0 < $code) { throw FilterException::fromProcess($proc)->setInput($asset->getContent()); } $asset->setContent($proc->getOutput()); } public function filterDump(AssetInterface $asset) { } }