private function _getJs($coffeeFile)
 {
     // get file from cache if possible:
     if (self::CACHING === true) {
         $coffeeHash = sha1_file($coffeeFile);
         if (file_exists($this->_cacheDir . $coffeeHash)) {
             return file_get_contents($this->_cacheDir . $coffeeHash);
         }
     }
     // file not cached or cache disabled -> covert, cache, return:
     $coffee = file_get_contents($coffeeFile);
     try {
         $js = CoffeeScript\compile($coffee);
         if (self::CACHING === true) {
             $this->_cacheJs($js, $coffeeFile, $coffeeHash);
         }
         return $js;
     } catch (Exception $e) {
         var_dump($e);
     }
     return false;
 }
 /**
  * Caches the assets if needed and returns a list files/paths
  * @param  array  $assets
  * @param  string $type   [description]
  * @return array
  */
 private static function _cache_assets($assets = null, $type = null)
 {
     $files = array();
     // Will contain all the processed files
     if ($assets and $type) {
         $last_modified = 0;
         $path = $type == 'css' ? self::$css_path : self::$js_path;
         if ($type === 'css' and self::$combine_css or $type === 'js' and self::$combine_js) {
             // Check if it's a group (associative array)
             if (self::$group) {
                 $assets = $assets[self::$group];
             }
             // Find last modified file
             foreach ($assets as $asset) {
                 $last_modified = max($last_modified, filemtime(realpath($path . '/' . $asset)));
             }
             // Build the filename and path
             if (self::$prefix_css and $type == 'css') {
                 $file_name = self::$prefix_css . '.' . (self::$prefix_timestamp ? date('YmdHis', $last_modified) . '.' : '') . $type;
             } elseif (self::$prefix_js and $type == 'js') {
                 $file_name = self::$prefix_js . '.' . (self::$prefix_timestamp ? date('YmdHis', $last_modified) . '.' : '') . $type;
             } elseif (self::$group and !self::$prefix_timestamp) {
                 $file_name = $type;
             } else {
                 $file_name = date('YmdHis', $last_modified) . '.' . $type;
             }
             $file_path = reduce_double_slashes(self::$cache_path . '/' . (self::$group ? self::$group . '.' : '') . $file_name);
             // Now check if the file exists in the cache directory
             if (!file_exists($file_path)) {
                 $data = '';
                 // Get file contents
                 foreach ($assets as $asset) {
                     // Get file contents, for CSS file we use the LESS compiler
                     if ($type == 'css') {
                         $less = new lessc(self::$css_path . '/' . $asset);
                         $contents = $less->parse();
                     } else {
                         if (pathinfo($asset, PATHINFO_EXTENSION) === 'coffee') {
                             // Try to compile CoffeeScript
                             try {
                                 $contents = read_file(reduce_double_slashes($path . '/' . $asset));
                                 $contents = CoffeeScript\compile($contents);
                             } catch (Exception $e) {
                                 $contents = '';
                             }
                         } else {
                             $contents = read_file(reduce_double_slashes($path . '/' . $asset));
                         }
                     }
                     $pathinfo = pathinfo($asset);
                     if ($pathinfo['dirname'] != '.') {
                         $base_url = self::$css_url . '/' . $pathinfo['dirname'];
                     } else {
                         $base_url = self::$css_url;
                     }
                     // Process asset
                     $data .= self::_process($contents, $type, 'minify', $base_url);
                 }
                 // Minify
                 if ($type == 'css') {
                     $data = self::_process($data, $type, 'minify');
                 }
                 // Auto clear cache directory?
                 if ($type == 'css' and (self::$auto_clear_cache or self::$auto_clear_css_cache) and !self::$auto_cleared_css_cache) {
                     self::clear_css_cache();
                     self::$auto_cleared_css_cache = true;
                 }
                 if ($type == 'js' and (self::$auto_clear_cache or self::$auto_clear_js_cache) and !self::$auto_cleared_js_cache) {
                     self::clear_js_cache();
                     self::$auto_cleared_js_cache = true;
                 }
                 // And save the file
                 write_file($file_path, $data);
             }
             // Add to files
             $files[] = reduce_double_slashes(self::$cache_url . '/' . (self::$group ? self::$group . '.' : '') . $file_name);
         } else {
             // Check if it's a group (associative array)
             if (self::$group) {
                 $assets = $assets[self::$group];
             }
             foreach ($assets as $asset) {
                 $last_modified = filemtime(realpath($path . '/' . $asset));
                 // Now check if the file exists in the cache directory
                 $file = pathinfo($asset);
                 if (self::$prefix_css and $type == 'css') {
                     $file_name = self::$prefix_css . '.' . (self::$prefix_timestamp ? date('YmdHis', $last_modified) . '.' : '') . $file['filename'] . '.' . $type;
                 } elseif (self::$prefix_js and $type == 'js') {
                     $file_name = self::$prefix_js . '.' . (self::$prefix_timestamp ? date('YmdHis', $last_modified) . '.' : '') . $file['filename'] . '.' . $type;
                 } else {
                     $file_name = date('YmdHis', $last_modified) . '.' . $file['filename'] . '.' . $type;
                 }
                 $file_path = reduce_double_slashes(self::$cache_path . '/' . (self::$group ? self::$group . '.' : '') . $file_name);
                 if (!file_exists($file_path)) {
                     // Get file contents
                     if ($type == 'css') {
                         $less = new lessc(self::$css_path . '/' . $asset);
                         $data = $less->parse();
                     } else {
                         if (pathinfo($asset, PATHINFO_EXTENSION) === 'coffee') {
                             // Try to compile CoffeeScript
                             try {
                                 $data = read_file(reduce_double_slashes($path . '/' . $asset));
                                 $data = CoffeeScript\compile($data);
                             } catch (Exception $e) {
                                 $data = '';
                             }
                         } else {
                             $data = read_file(reduce_double_slashes($path . '/' . $asset));
                         }
                     }
                     // Process
                     $data = self::_process($data, $type, 'all', site_url(self::$css_url));
                     // Auto clear cache directory?
                     if ($type == 'css' and (self::$auto_clear_cache or self::$auto_clear_css_cache)) {
                         self::clear_css_cache($asset);
                     }
                     if ($type == 'js' and (self::$auto_clear_cache or self::$auto_clear_js_cache)) {
                         self::clear_js_cache($asset);
                     }
                     // And save the file
                     write_file($file_path, $data);
                 }
                 // Add to files
                 $files[] = reduce_double_slashes(self::$cache_url . '/' . (self::$group ? self::$group . '.' : '') . $file_name);
             }
         }
     }
     return $files;
 }
Example #3
0
 public static function build($file)
 {
     return CoffeeScript\compile($file);
 }