Exemple #1
0
/**
 * Apply JsMin to $content.
 *
 * @param string $filename
 * @param string $content Content to filter.
 * @throws Exception
 * @return string
 */
	public function output($filename, $content) {
		App::import('Vendor', 'jsmin', array('file' => $this->_settings['path']));
		if (!class_exists('JsMin')) {
			throw new Exception(sprintf('Cannot not load filter class "%s".', 'JsMin'));
		}
		return JsMin::minify($content);
	}
Exemple #2
0
 /**
  * undocumented function
  *
  * @return void
  */
 function main()
 {
     $result = $folder = null;
     $mainfiles = explode(',', $this->args[0]);
     $target = !empty($this->params['ext']) ? $this->args[0] . '.' . $this->params['ext'] : $this->args[0] . '.min';
     $jsroot = $this->params['working'] . DS . $this->params['webroot'] . DS . 'js' . DS;
     foreach ((array) $mainfiles as $mainfile) {
         $mainfile = strpos($mainfile, '/') === false ? $jsroot . $mainfile : $mainfile;
         $Pack = new File(str_replace('.js', '', $mainfile) . '.js');
         $result .= JsMin::minify($Pack->read());
     }
     if (!empty($this->args[1])) {
         $folder = $this->args[1] . DS;
         $Js = new Folder($jsroot . $folder);
         list($ds, $files) = $Js->read();
         foreach ((array) $files as $file) {
             $file = strpos($file, '/') === false ? $jsroot . $folder . $file : $file;
             $Pack = new File(str_replace('.js', '', $file) . '.js');
             $result .= JsMin::minify($Pack->read());
         }
     }
     $Packed = new File($jsroot . $target . '.js');
     if ($Packed->write($result, 'w', true)) {
         $this->out($Packed->name() . ' created');
     }
 }
Exemple #3
0
    /**
     * Tests JsMin::minify()
     */
    public function testMinify()
    {
        $expect = "\nfunction foo(bar)\n{if(bar==2){return true;}else{return false;}}";
        $javascript = '
function foo(bar)
{
	if (bar == 2) {
		return true;
	} else {
		return false;
	}
}
';
        $this->assertEquals($expect, JsMin::minify($javascript));
    }
 public function getFeatureContent($feature, GadgetContext $context, $isGadgetContext)
 {
     if (empty($feature)) {
         return '';
     }
     if (!isset($this->features[$feature])) {
         throw new GadgetException("Invalid feature: " . htmlentities($feature));
     }
     $featureName = $feature;
     $feature = $this->features[$feature];
     $filesContext = $isGadgetContext ? 'gadgetJs' : 'containerJs';
     if (!isset($feature[$filesContext])) {
         // no javascript specified for this context
         return '';
     }
     $ret = '';
     if (Shindig_Config::get('compress_javascript')) {
         $featureCache = Cache::createCache(Shindig_Config::get('feature_cache'), 'FeatureCache');
         if ($featureContent = $featureCache->get(md5('features:' . $featureName . $isGadgetContext))) {
             return $featureContent;
         }
     }
     foreach ($feature[$filesContext] as $entry) {
         switch ($entry['type']) {
             case 'URL':
                 $request = new RemoteContentRequest($entry['content']);
                 $request->getOptions()->ignoreCache = $context->getIgnoreCache();
                 $context->getHttpFetcher()->fetch($request);
                 if ($request->getHttpCode() == '200') {
                     $ret .= $request->getResponseContent() . "\n";
                 }
                 break;
             case 'FILE':
                 $file = $feature['basePath'] . '/' . $entry['content'];
                 $ret .= file_get_contents($file) . "\n";
                 break;
             case 'INLINE':
                 $ret .= $entry['content'] . "\n";
                 break;
         }
     }
     if (Shindig_Config::get('compress_javascript')) {
         $ret = JsMin::minify($ret);
         $featureCache->set(md5('features:' . $featureName . $isGadgetContext), $ret);
     }
     return $ret;
 }
 public function getContent()
 {
     if (!$this->loaded && $this->type == 'FILE') {
         if (Config::get('compress_javascript')) {
             $dataCache = Config::get('data_cache');
             $dataCache = new $dataCache();
             if (!($content = $dataCache->get(md5($this->content)))) {
                 $content = JsMin::minify(JsLibrary::loadData($this->content, $this->type));
                 $dataCache->set(md5($this->content), $content);
                 $this->content = $content;
             } else {
                 $this->content = $content;
             }
         } else {
             $this->content = JsLibrary::loadData($this->content, $this->type);
         }
         $this->loaded = true;
     }
     return $this->content;
 }
Exemple #6
0
 public static function js($js)
 {
     return JsMin::minify($js);
 }
Exemple #7
0
 /**
  * Apply JsMin to $content.
  *
  * @param string $content Content to filter.
  * @return string
  */
 public function filter($content)
 {
     return JsMin::minify($content);
 }
Exemple #8
0
 public static function minify($js)
 {
     $jsmin = new JsMin($js);
     return $jsmin->min();
 }
 /**
  * Apply JsMin to $content.
  *
  * @param string $filename
  * @param string $content Content to filter.
  * @return string
  */
 public function output($filename, $content)
 {
     App::import('Vendor', 'jsmin', array('file' => $this->_settings['path']));
     return JsMin::minify($content);
 }
Exemple #10
0
    /**
     * Uses jsmin.php to minify css content
     *
     * @access private
     * @param string $contents
     * @return string
     */
    private function __jsMin($contents)
    {
        App::import('Vendor', 'jsMin', array('file' => 'minify' . DS . 'jsmin.php'));
        $minifiedContent = JsMin::minify($contents);

        if($this->__verify($minifiedContent)){
            return $minifiedContent;
        }else{
            $this->log("jsmin.php failed to minify JS content", 'AssetHelper');
            return $contents;
        }
    }
Exemple #11
0
 /**
  * Minify JavaScript code, removes whitespaces
  *
  * @param $script
  * @return array
  */
 public function minifyScript($script)
 {
     return JsMin::minify($script);
 }