Changeset 114986 in spip-zone


Ignore:
Timestamp:
Apr 15, 2019, 1:16:05 PM (7 months ago)
Author:
cedric@…
Message:

Mise a jour de la lib sccphp en version https://github.com/Cerdic/scssphp/commit/81596ebe2d9c03d08b5f2fdc296876f7294cd0e3 qui inclue un cache pour le compiler egalement

Location:
_plugins_/scssphp/trunk/lib/scssphp/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/scssphp/trunk/lib/scssphp/src/Cache.php

    r114936 r114986  
    8484         * @param array $options
    8585         *  any option that affect the operation result on the content
     86         * @param int $last_modified
    8687         * @return mixed
    8788         * @throws Exception
    8889         */
    89         public function getCache( $operation, $what, $options = array()){
     90        public function getCache( $operation, $what, $options = array(), $last_modified = null){
    9091               
    9192                $fileCache = self::$cache_dir . self::cacheName( $operation, $what, $options);
    9293               
    9394                if (!self::$force_refresh
    94                   and file_exists($fileCache)
    95                   and filemtime($fileCache) + self::$gc_lifetime > time() ) {
    96 
    97                         $c = file_get_contents($fileCache);
    98                         $c = unserialize($c);
    99                         if (is_array($c) and isset($c['value'])) {
    100                                 return $c['value'];
    101                         }
     95                  and file_exists($fileCache)) {
     96
     97                        $cache_time = filemtime($fileCache);
     98                        if (
     99                                (is_null($last_modified) or $cache_time > $last_modified)
     100                                and $cache_time + self::$gc_lifetime > time() ) {
     101
     102                                $c = file_get_contents($fileCache);
     103                                $c = unserialize($c);
     104                                if (is_array($c) and isset($c['value'])) {
     105                                        return $c['value'];
     106                                }
     107                        }
     108
    102109                }
    103110
  • _plugins_/scssphp/trunk/lib/scssphp/src/Compiler.php

    r114936 r114986  
    175175    }
    176176
     177    public function getCompileOptions() {
     178        $options = array(
     179            'importPaths' => $this->importPaths,
     180            'registeredVars' => $this->registeredVars,
     181            'registeredFeatures' => $this->registeredFeatures,
     182            'encoding' => $this->encoding,
     183            'sourceMap' => serialize($this->sourceMap),
     184            'sourceMapOptions' => $this->sourceMapOptions,
     185        );
     186        return $options;
     187    }
     188
    177189    /**
    178190     * Compile scss
     
    187199    public function compile($code, $path = null)
    188200    {
     201
     202        if ($this->cache) {
     203            $cache_key = ($path ? $path : "(stdin)") . ":" . md5($code);
     204            $compile_options = $this->getCompileOptions();
     205            $cache = $this->cache->getCache("compile", $cache_key, $compile_options);
     206            if (is_array($cache)
     207                and isset($cache['dependencies'])
     208                and isset($cache['out']) ) {
     209
     210                // check if any dependency file changed before accepting the cache
     211                foreach ($cache['dependencies'] as $file => $mtime) {
     212                    if (!file_exists($file)
     213                        or filemtime($file) !== $mtime) {
     214                        unset($cache);
     215                        break;
     216                    }
     217                }
     218                if (isset($cache)) {
     219                    return $cache['out'];
     220                }
     221            }
     222        }
     223
     224
    189225        $this->indentLevel    = -1;
    190226        $this->commentsSeen   = [];
     
    241277
    242278            $out .= sprintf('/*# sourceMappingURL=%s */', $sourceMapUrl);
     279        }
     280
     281        if ($this->cache and isset($cache_key) and isset($compile_options)) {
     282            $v = array(
     283                'dependencies' => $this->getParsedFiles(),
     284                'out' => &$out,
     285            );
     286            $this->cache->setCache("compile", $cache_key, $v, $compile_options);
    243287        }
    244288
Note: See TracChangeset for help on using the changeset viewer.