public function action_js() { $group = (string) $this->request->param('group'); if (empty($group)) { $group = 'default'; } if (!($content = Kohana::cache('minify::js::' . $group))) { $path = isset($this->_config['js'][$group]['path']) ? $this->_config['js'][$group]['path'] : ''; $files = isset($this->_config['js'][$group]['files']) ? $this->_config['js'][$group]['files'] : array(); if (!is_array($files)) { $files = array(); } $content = ''; foreach ($files as $file) { $content .= file_get_contents($path . DIRECTORY_SEPARATOR . $file) . "\n"; } if (!empty($content)) { $pack = isset($this->_config['js'][$group]['packer']) ? (bool) $this->_config['js'][$group]['packer'] : false; $is_min = isset($this->_config['js'][$group]['is_min']) ? (bool) $this->_config['js'][$group]['is_min'] : false; if ($pack) { $packer = new Minify_Packer($content, 'Normal', TRUE, FALSE); $content = $packer->pack(); } else { if (!$is_min) { $minifier = isset($this->_config['js'][$group]['minifier']) ? $this->_config['js'][$group]['minifier'] : ''; if (!empty($minifier) && class_exists($minifier)) { $class = new ReflectionClass($minifier); $js_min = $class->newInstance($content); $content = $class->getMethod('min')->invoke($js_min); } else { $content = Minify_JS::minify($content); } } } } if ((bool) $this->_config['cache']) { Kohana::cache('minify::js::' . $group, $content, (int) $this->_config['cache_lifetime']); } } $this->response->body($content); }
/** * Minify Javascript. * * @param string $js Javascript to be minified * * @return string */ public static function minify($js) { $jsmin = new Minify_JS($js); return $jsmin->min(); }