/** * Pack files, minify contents and save result into a file. * @param array $files * @param sting $type "js" or "css" * @param string $name * @return string The web path of the created compressed file */ protected function compress(array $files, $type, $name) { if (empty($files)) { return; } // Abslotute files path $sources = array(); foreach ($files as $file) { $sources[] = $this->getAbsoluteDir($file, $type); } // merge files $packer = new sfAssetsManagerPacker(); $packed = $packer->execute($sources); // minify file if ($type == 'js') { $minifier = new sfAssetsManagerJSMinifier(); } elseif ($type == 'css') { $cdnImg = sfConfig::get('app_sf_assets_manager_plugin_cdn_img', ''); $strCss = str_replace("url('/", "url('" . $cdnImg . '/', file_get_contents($packed)); file_put_contents($packed, $strCss); $minifier = new sfAssetsManagerCSSMinifier(); } $minified = $minifier->execute($packed); $outputUri = $this->getFileUri($name, $type); $outputPath = sfConfig::get('sf_web_dir') . $outputUri; // create file rename($minified, $outputPath); return $outputUri; }
<?php require dirname(__FILE__) . '/../bootstrap/unit.php'; require dirname(__FILE__) . '/../../lib/compressor/sfAssetsManagerCSSMinifier.class.php'; $fileDir = dirname(__FILE__) . '/../fixtures/css'; $minifier = new sfAssetsManagerCSSMinifier(); $file = $minifier->execute($fileDir . '/expanded.css'); $t = new lime_test(2, new lime_output_color()); $t->ok(file_exists($file), '->execute() returns a file path'); $t->is(file_get_contents($file), "html{margin:0;padding:0}#content{color:#000}", '->execute() compresses the js file content');