Changeset 102567 in spip-zone for _plugins_/less-css/trunk


Ignore:
Timestamp:
Jan 30, 2017, 11:25:07 AM (18 months ago)
Author:
cedric@…
Message:

Mise a jour de la librairie LessPHP + un timer pour loger quel fichier un compile et le temps que ca prend

Location:
_plugins_/less-css/trunk
Files:
6 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/less-css/trunk/less.php/Cache.php

    r83499 r102567  
    1212class Less_Cache{
    1313
    14         public static $cache_dir = false;               // directory less.php can use for storing data
     14        // directory less.php can use for storing data
     15        public static $cache_dir        = false;
     16
     17        // prefix for the storing data
     18        public static $prefix           = 'lessphp_';
     19
     20        // prefix for the storing vars
     21        public static $prefix_vars      = 'lessphpvars_';
     22
     23        // specifies the number of seconds after which data created by less.php will be seen as 'garbage' and potentially cleaned up
     24        public static $gc_lifetime      = 604800;
    1525
    1626
     
    3747                }
    3848
     49                if( isset($parser_options['prefix']) ){
     50                        Less_Cache::$prefix = $parser_options['prefix'];
     51                }
     52
     53                if( empty(Less_Cache::$prefix) ){
     54                        throw new Exception('prefix not set');
     55                }
     56
     57                if( isset($parser_options['prefix_vars']) ){
     58                        Less_Cache::$prefix_vars = $parser_options['prefix_vars'];
     59                }
     60
     61                if( empty(Less_Cache::$prefix_vars) ){
     62                        throw new Exception('prefix_vars not set');
     63                }
     64
    3965                self::CheckCacheDir();
    4066                $less_files = (array)$less_files;
     
    4470                if( !empty($modify_vars) ){
    4571                        $lessvars = Less_Parser::serializeVars($modify_vars);
    46                         $vars_file = Less_Cache::$cache_dir.'lessphpvars_' . sha1($lessvars) . '.less';
     72                        $vars_file = Less_Cache::$cache_dir . Less_Cache::$prefix_vars . sha1($lessvars) . '.less';
    4773
    4874                        if( !file_exists($vars_file) ){
     
    5682                // generate name for compiled css file
    5783                $hash = md5(json_encode($less_files));
    58                 $list_file = Less_Cache::$cache_dir.'lessphp_'.$hash.'.list';
    59 
     84                $list_file = Less_Cache::$cache_dir . Less_Cache::$prefix . $hash . '.list';
    6085
    6186                // check cached content
     
    6388                        if( file_exists($list_file) ){
    6489
    65                                 $list = explode("\n",file_get_contents($list_file));
    66 
    67                                 //pop the cached name that should match $compiled_name
    68                                 $cached_name = array_pop($list);
    69                                 if( !preg_match('/^lessphp_[a-f0-9]+\.css$/',$cached_name) ){
    70                                         $list[] = $cached_name;
    71                                         $cached_name = false;
    72                                 }
    73                                 $compiled_name = self::CompiledName($list);
    74 
    75                                 // if $cached_name != $compiled_name, we know we need to recompile
     90                                self::ListFiles($list_file, $list, $cached_name);
     91                                $compiled_name = self::CompiledName($list, $hash);
     92
     93                                // if $cached_name is the same as the $compiled name, don't regenerate
    7694                                if( !$cached_name || $cached_name === $compiled_name ){
    7795
     
    8098                                        if( $output_file && file_exists($output_file) ){
    8199                                                @touch($list_file);
    82                                                 @touch($output_file);
    83100                                                return basename($output_file); // for backwards compatibility, we just return the name of the file
    84101                                        }
     
    92109                }
    93110
    94                 $compiled_name = self::CompiledName( $less_files );
     111                $compiled_name = self::CompiledName( $less_files, $hash );
    95112                $output_file = self::OutputFile($compiled_name, $parser_options );
    96113
     
    177194
    178195
    179         private static function CompiledName( $files ){
     196        private static function CompiledName( $files, $extrahash ){
    180197
    181198                //save the file list
     
    185202                }
    186203
    187                 return 'lessphp_'.sha1(json_encode($temp)).'.css';
     204                return Less_Cache::$prefix.sha1(json_encode($temp).$extrahash).'.css';
    188205        }
    189206
     
    214231
    215232
     233        /**
     234         * Delete unused less.php files
     235         *
     236         */
    216237        public static function CleanCache(){
    217238                static $clean = false;
     
    223244                $files = scandir(Less_Cache::$cache_dir);
    224245                if( $files ){
    225                         $check_time = time() - 604800;
     246                        $check_time = time() - self::$gc_lifetime;
    226247                        foreach($files as $file){
    227                                 if( strpos($file,'lessphp_') !== 0 ){
     248
     249                                // don't delete if the file wasn't created with less.php
     250                                if( strpos($file,Less_Cache::$prefix) !== 0 ){
    228251                                        continue;
    229252                                }
    230                                 $full_path = Less_Cache::$cache_dir.'/'.$file;
    231                                 if( filemtime($full_path) > $check_time ){
     253
     254                                $full_path = Less_Cache::$cache_dir . $file;
     255
     256                                // make sure the file still exists
     257                                // css files may have already been deleted
     258                                if( !file_exists($full_path) ){
    232259                                        continue;
    233260                                }
     261                                $mtime = filemtime($full_path);
     262
     263                                // don't delete if it's a relatively new file
     264                                if( $mtime > $check_time ){
     265                                        continue;
     266                                }
     267
     268                                $parts = explode('.',$file);
     269                                $type = array_pop($parts);
     270
     271
     272                                // delete css files based on the list files
     273                                if( $type === 'css' ){
     274                                        continue;
     275                                }
     276
     277
     278                                // delete the list file and associated css file
     279                                if( $type === 'list' ){
     280                                        self::ListFiles($full_path, $list, $css_file_name);
     281                                        if( $css_file_name ){
     282                                                $css_file = Less_Cache::$cache_dir . $css_file_name;
     283                                                if( file_exists($css_file) ){
     284                                                        unlink($css_file);
     285                                                }
     286                                        }
     287                                }
     288
    234289                                unlink($full_path);
    235290                        }
     
    239294        }
    240295
     296
     297        /**
     298         * Get the list of less files and generated css file from a list file
     299         *
     300         */
     301        static function ListFiles($list_file, &$list, &$css_file_name ){
     302
     303                $list = explode("\n",file_get_contents($list_file));
     304
     305                //pop the cached name that should match $compiled_name
     306                $css_file_name = array_pop($list);
     307
     308                if( !preg_match('/^' . Less_Cache::$prefix . '[a-f0-9]+\.css$/',$css_file_name) ){
     309                        $list[] = $css_file_name;
     310                        $css_file_name = false;
     311                }
     312
     313        }
     314
    241315}
  • _plugins_/less-css/trunk/less.php/Less.php

    r83499 r102567  
    2121                'strictMath'                    => false,                       // whether math has to be within parenthesis
    2222                'relativeUrls'                  => true,                        // option - whether to adjust URL's to be relative
    23                 'urlArgs'                               => array(),                     // whether to add args into url tokens
     23                'urlArgs'                               => '',                          // whether to add args into url tokens
    2424                'numPrecision'                  => 8,
    2525
     
    3636                'sourceMapURL'                  => null,
    3737
     38                'indentation'                   => '  ',
     39
    3840                'plugins'                               => array(),
    3941
     
    4850        private $saveStack = array();   // holds state for backtracking
    4951        private $furthest;
     52        private $mb_internal_encoding = ''; // for remember exists value of mbstring.internal_encoding
    5053
    5154        /**
     
    5457        private $env;
    5558
    56         private $rules = array();
     59        protected $rules = array();
    5760
    5861        private static $imports = array();
     
    8487                }
    8588
     89                // mbstring.func_overload > 1 bugfix
     90                // The encoding value must be set for each source file,
     91                // therefore, to conserve resources and improve the speed of this design is taken here
     92                if (ini_get('mbstring.func_overload')) {
     93                        $this->mb_internal_encoding = ini_get('mbstring.internal_encoding');
     94                        @ini_set('mbstring.internal_encoding', 'ascii');
     95                }
     96
    8697        }
    8798
     
    175186                setlocale(LC_NUMERIC, "C");
    176187
    177 
    178                 $root = new Less_Tree_Ruleset(array(), $this->rules );
    179                 $root->root = true;
    180                 $root->firstRoot = true;
    181 
    182 
    183                 $this->PreVisitors($root);
    184 
    185                 self::$has_extends = false;
    186                 $evaldRoot = $root->compile($this->env);
    187 
    188 
    189 
    190                 $this->PostVisitors($evaldRoot);
    191 
    192                 if( Less_Parser::$options['sourceMap'] ){
    193                         $generator = new Less_SourceMap_Generator($evaldRoot, Less_Parser::$contentsMap, Less_Parser::$options );
    194                         // will also save file
    195                         // FIXME: should happen somewhere else?
    196                         $css = $generator->generateCSS();
    197                 }else{
    198                         $css = $evaldRoot->toCSS();
    199                 }
    200 
    201                 if( Less_Parser::$options['compress'] ){
    202                         $css = preg_replace('/(^(\s)+)|((\s)+$)/', '', $css);
     188                try {
     189
     190                        $root = new Less_Tree_Ruleset(array(), $this->rules );
     191                        $root->root = true;
     192                        $root->firstRoot = true;
     193
     194
     195                        $this->PreVisitors($root);
     196
     197                        self::$has_extends = false;
     198                        $evaldRoot = $root->compile($this->env);
     199
     200
     201
     202                        $this->PostVisitors($evaldRoot);
     203
     204                        if( Less_Parser::$options['sourceMap'] ){
     205                                $generator = new Less_SourceMap_Generator($evaldRoot, Less_Parser::$contentsMap, Less_Parser::$options );
     206                                // will also save file
     207                                // FIXME: should happen somewhere else?
     208                                $css = $generator->generateCSS();
     209                        }else{
     210                                $css = $evaldRoot->toCSS();
     211                        }
     212
     213                        if( Less_Parser::$options['compress'] ){
     214                                $css = preg_replace('/(^(\s)+)|((\s)+$)/', '', $css);
     215                        }
     216
     217                } catch (Exception $exc) {
     218                        // Intentional fall-through so we can reset environment
    203219                }
    204220
     
    206222                @ini_set('precision',$precision);
    207223                setlocale(LC_NUMERIC, $locale);
     224
     225                // If you previously defined $this->mb_internal_encoding
     226                // is required to return the encoding as it was before
     227                if ($this->mb_internal_encoding != '') {
     228                        @ini_set("mbstring.internal_encoding", $this->mb_internal_encoding);
     229                        $this->mb_internal_encoding = '';
     230                }
     231
     232                // Rethrow exception after we handled resetting the environment
     233                if (!empty($exc)) {
     234                        throw $exc;
     235                }
     236
     237
    208238
    209239                return $css;
     
    276306                }else{
    277307                        $file_uri = self::WinPath($file_uri);
    278                         $filename = basename($file_uri);
     308                        $filename = $file_uri;
    279309                        $uri_root = dirname($file_uri);
    280310                }
     
    319349
    320350                $previousFileInfo = $this->env->currentFileInfo;
    321                 $filename = self::WinPath($filename);
     351
     352
     353                if( $filename ){
     354                        $filename = self::WinPath(realpath($filename));
     355                }
    322356                $uri_root = self::WinPath($uri_root);
     357
    323358                $this->SetFileInfo($filename, $uri_root);
    324359
     
    596631                        $parts[] = Less_Version::cache_version;
    597632                        $parts[] = Less_Parser::$options['cache_method'];
    598                         return Less_Cache::$cache_dir.'lessphp_'.base_convert( sha1(json_encode($parts) ), 16, 36).'.lesscache';
     633                        return Less_Cache::$cache_dir . Less_Cache::$prefix . base_convert( sha1(json_encode($parts) ), 16, 36) . '.lesscache';
    599634                }
    600635        }
     
    19571992
    19581993        private function parseImportOption(){
    1959                 $opt = $this->MatchReg('/\\G(less|css|multiple|once|inline|reference)/');
     1994                $opt = $this->MatchReg('/\\G(less|css|multiple|once|inline|reference|optional)/');
    19601995                if( $opt ){
    19611996                        return $opt[1];
     
    25912626
    25922627}
    2593 
    2594 
    25952628 
    25962629
     
    29482981        }
    29492982
    2950 
    29512983        /**
    29522984         * @param string $op
    29532985         */
    2954     public static function operate( $op, $a, $b ){
     2986        public static function operate( $op, $a, $b ){
    29552987                switch ($op) {
    29562988                        case '+': return $a + $b;
     
    29783010        }
    29793011
    2980     public static function number($n){
     3012        public static function number($n){
    29813013
    29823014                if ($n instanceof Less_Tree_Dimension) {
     
    29893021        }
    29903022
    2991     public static function scaled($n, $size = 255 ){
     3023        public static function scaled($n, $size = 255 ){
    29923024                if( $n instanceof Less_Tree_Dimension && $n->unit->is('%') ){
    29933025                        return (float)$n->value * $size / 100;
     
    29973029        }
    29983030
    2999         public function rgb ($r, $g, $b){
     3031        public function rgb ($r = null, $g = null, $b = null){
     3032                if (is_null($r) || is_null($g) || is_null($b)) {
     3033                        throw new Less_Exception_Compiler("rgb expects three parameters");
     3034                }
    30003035                return $this->rgba($r, $g, $b, 1.0);
    30013036        }
    30023037
    3003         public function rgba($r, $g, $b, $a){
     3038        public function rgba($r = null, $g = null, $b = null, $a = null){
    30043039                $rgb = array($r, $g, $b);
    30053040                $rgb = array_map(array('Less_Functions','scaled'),$rgb);
     
    30753110        }
    30763111
    3077         public function hue($color){
     3112        public function hue($color = null){
     3113                if (!$color instanceof Less_Tree_Color) {
     3114                        throw new Less_Exception_Compiler('The first argument to hue must be a color' . ($color instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3115                }
     3116
    30783117                $c = $color->toHSL();
    30793118                return new Less_Tree_Dimension(Less_Parser::round($c['h']));
    30803119        }
    30813120
    3082         public function saturation($color){
     3121        public function saturation($color = null){
     3122                if (!$color instanceof Less_Tree_Color) {
     3123                        throw new Less_Exception_Compiler('The first argument to saturation must be a color' . ($color instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3124                }
     3125
    30833126                $c = $color->toHSL();
    30843127                return new Less_Tree_Dimension(Less_Parser::round($c['s'] * 100), '%');
    30853128        }
    30863129
    3087         public function lightness($color){
     3130        public function lightness($color = null){
     3131                if (!$color instanceof Less_Tree_Color) {
     3132                        throw new Less_Exception_Compiler('The first argument to lightness must be a color' . ($color instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3133                }
     3134
    30883135                $c = $color->toHSL();
    30893136                return new Less_Tree_Dimension(Less_Parser::round($c['l'] * 100), '%');
    30903137        }
    30913138
    3092         public function hsvhue( $color ){
     3139        public function hsvhue( $color = null ){
     3140                if (!$color instanceof Less_Tree_Color) {
     3141                        throw new Less_Exception_Compiler('The first argument to hsvhue must be a color' . ($color instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3142                }
     3143
    30933144                $hsv = $color->toHSV();
    30943145                return new Less_Tree_Dimension( Less_Parser::round($hsv['h']) );
     
    30963147
    30973148
    3098         public function hsvsaturation( $color ){
     3149        public function hsvsaturation( $color = null ){
     3150                if (!$color instanceof Less_Tree_Color) {
     3151                        throw new Less_Exception_Compiler('The first argument to hsvsaturation must be a color' . ($color instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3152                }
     3153
    30993154                $hsv = $color->toHSV();
    31003155                return new Less_Tree_Dimension( Less_Parser::round($hsv['s'] * 100), '%' );
    31013156        }
    31023157
    3103         public function hsvvalue( $color ){
     3158        public function hsvvalue( $color = null ){
     3159                if (!$color instanceof Less_Tree_Color) {
     3160                        throw new Less_Exception_Compiler('The first argument to hsvvalue must be a color' . ($color instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3161                }
     3162
    31043163                $hsv = $color->toHSV();
    31053164                return new Less_Tree_Dimension( Less_Parser::round($hsv['v'] * 100), '%' );
    31063165        }
    31073166
    3108         public function red($color) {
     3167        public function red($color = null) {
     3168                if (!$color instanceof Less_Tree_Color) {
     3169                        throw new Less_Exception_Compiler('The first argument to red must be a color' . ($color instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3170                }
     3171
    31093172                return new Less_Tree_Dimension( $color->rgb[0] );
    31103173        }
    31113174
    3112         public function green($color) {
     3175        public function green($color = null) {
     3176                if (!$color instanceof Less_Tree_Color) {
     3177                        throw new Less_Exception_Compiler('The first argument to green must be a color' . ($color instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3178                }
     3179
    31133180                return new Less_Tree_Dimension( $color->rgb[1] );
    31143181        }
    31153182
    3116         public function blue($color) {
     3183        public function blue($color = null) {
     3184                if (!$color instanceof Less_Tree_Color) {
     3185                        throw new Less_Exception_Compiler('The first argument to blue must be a color' . ($color instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3186                }
     3187
    31173188                return new Less_Tree_Dimension( $color->rgb[2] );
    31183189        }
    31193190
    3120         public function alpha($color){
     3191        public function alpha($color = null){
     3192                if (!$color instanceof Less_Tree_Color) {
     3193                        throw new Less_Exception_Compiler('The first argument to alpha must be a color' . ($color instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3194                }
     3195
    31213196                $c = $color->toHSL();
    31223197                return new Less_Tree_Dimension($c['a']);
    31233198        }
    31243199
    3125         public function luma ($color) {
     3200        public function luma ($color = null) {
     3201                if (!$color instanceof Less_Tree_Color) {
     3202                        throw new Less_Exception_Compiler('The first argument to luma must be a color' . ($color instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3203                }
     3204
    31263205                return new Less_Tree_Dimension(Less_Parser::round( $color->luma() * $color->alpha * 100), '%');
    31273206        }
    31283207
    3129         public function luminance( $color ){
     3208        public function luminance( $color = null ){
     3209                if (!$color instanceof Less_Tree_Color) {
     3210                        throw new Less_Exception_Compiler('The first argument to luminance must be a color' . ($color instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3211                }
     3212
    31303213                $luminance =
    31313214                        (0.2126 * $color->rgb[0] / 255)
     
    31363219        }
    31373220
    3138         public function saturate($color, $amount = null){
     3221        public function saturate($color = null, $amount = null){
    31393222                // filter: saturate(3.2);
    31403223                // should be kept as is, so check for color
    3141                 if( !property_exists($color,'rgb') ){
     3224                if ($color instanceof Less_Tree_Dimension) {
    31423225                        return null;
    31433226                }
     3227
     3228                if (!$color instanceof Less_Tree_Color) {
     3229                        throw new Less_Exception_Compiler('The first argument to saturate must be a color' . ($color instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3230                }
     3231                if (!$amount instanceof Less_Tree_Dimension) {
     3232                        throw new Less_Exception_Compiler('The second argument to saturate must be a percentage' . ($amount instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3233                }
     3234
    31443235                $hsl = $color->toHSL();
    31453236
     
    31533244         * @param Less_Tree_Dimension $amount
    31543245         */
    3155         public function desaturate($color, $amount){
     3246        public function desaturate($color = null, $amount = null){
     3247                if (!$color instanceof Less_Tree_Color) {
     3248                        throw new Less_Exception_Compiler('The first argument to desaturate must be a color' . ($color instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3249                }
     3250                if (!$amount instanceof Less_Tree_Dimension) {
     3251                        throw new Less_Exception_Compiler('The second argument to desaturate must be a percentage' . ($amount instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3252                }
     3253
    31563254                $hsl = $color->toHSL();
    31573255
     
    31643262
    31653263
    3166         public function lighten($color, $amount){
     3264        public function lighten($color = null, $amount=null){
     3265                if (!$color instanceof Less_Tree_Color) {
     3266                        throw new Less_Exception_Compiler('The first argument to lighten must be a color' . ($color instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3267                }
     3268                if (!$amount instanceof Less_Tree_Dimension) {
     3269                        throw new Less_Exception_Compiler('The second argument to lighten must be a percentage' . ($amount instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3270                }
     3271
    31673272                $hsl = $color->toHSL();
    31683273
     
    31733278        }
    31743279
    3175         public function darken($color, $amount){
    3176 
    3177                 if( $color instanceof Less_Tree_Color ){
    3178                         $hsl = $color->toHSL();
    3179                         $hsl['l'] -= $amount->value / 100;
    3180                         $hsl['l'] = self::clamp($hsl['l']);
    3181 
    3182                         return $this->hsla($hsl['h'], $hsl['s'], $hsl['l'], $hsl['a']);
    3183                 }
    3184 
    3185                 Less_Functions::Expected('color',$color);
    3186         }
    3187 
    3188         public function fadein($color, $amount){
     3280        public function darken($color = null, $amount = null){
     3281                if (!$color instanceof Less_Tree_Color) {
     3282                        throw new Less_Exception_Compiler('The first argument to darken must be a color' . ($color instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3283                }
     3284                if (!$amount instanceof Less_Tree_Dimension) {
     3285                        throw new Less_Exception_Compiler('The second argument to darken must be a percentage' . ($amount instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3286                }
     3287
     3288                $hsl = $color->toHSL();
     3289                $hsl['l'] -= $amount->value / 100;
     3290                $hsl['l'] = self::clamp($hsl['l']);
     3291
     3292                return $this->hsla($hsl['h'], $hsl['s'], $hsl['l'], $hsl['a']);
     3293        }
     3294
     3295        public function fadein($color = null, $amount = null){
     3296                if (!$color instanceof Less_Tree_Color) {
     3297                        throw new Less_Exception_Compiler('The first argument to fadein must be a color' . ($color instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3298                }
     3299                if (!$amount instanceof Less_Tree_Dimension) {
     3300                        throw new Less_Exception_Compiler('The second argument to fadein must be a percentage' . ($amount instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3301                }
     3302
    31893303                $hsl = $color->toHSL();
    31903304                $hsl['a'] += $amount->value / 100;
     
    31933307        }
    31943308
    3195         public function fadeout($color, $amount){
     3309        public function fadeout($color = null, $amount = null){
     3310                if (!$color instanceof Less_Tree_Color) {
     3311                        throw new Less_Exception_Compiler('The first argument to fadeout must be a color' . ($color instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3312                }
     3313                if (!$amount instanceof Less_Tree_Dimension) {
     3314                        throw new Less_Exception_Compiler('The second argument to fadeout must be a percentage' . ($amount instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3315                }
     3316
    31963317                $hsl = $color->toHSL();
    31973318                $hsl['a'] -= $amount->value / 100;
     
    32003321        }
    32013322
    3202         public function fade($color, $amount){
     3323        public function fade($color = null, $amount = null){
     3324                if (!$color instanceof Less_Tree_Color) {
     3325                        throw new Less_Exception_Compiler('The first argument to fade must be a color' . ($color instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3326                }
     3327                if (!$amount instanceof Less_Tree_Dimension) {
     3328                        throw new Less_Exception_Compiler('The second argument to fade must be a percentage' . ($amount instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3329                }
     3330
    32033331                $hsl = $color->toHSL();
    32043332
     
    32103338
    32113339
    3212         public function spin($color, $amount){
     3340        public function spin($color = null, $amount = null){
     3341                if (!$color instanceof Less_Tree_Color) {
     3342                        throw new Less_Exception_Compiler('The first argument to spin must be a color' . ($color instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3343                }
     3344                if (!$amount instanceof Less_Tree_Dimension) {
     3345                        throw new Less_Exception_Compiler('The second argument to spin must be a number' . ($amount instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3346                }
     3347
    32133348                $hsl = $color->toHSL();
    32143349                $hue = fmod($hsl['h'] + $amount->value, 360);
     
    32273362         * @param Less_Tree_Color $color1
    32283363         */
    3229         public function mix($color1, $color2, $weight = null){
     3364        public function mix($color1 = null, $color2 = null, $weight = null){
     3365                if (!$color1 instanceof Less_Tree_Color) {
     3366                        throw new Less_Exception_Compiler('The first argument to mix must be a color' . ($color1 instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3367                }
     3368                if (!$color2 instanceof Less_Tree_Color) {
     3369                        throw new Less_Exception_Compiler('The second argument to mix must be a color' . ($color2 instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3370                }
    32303371                if (!$weight) {
    32313372                        $weight = new Less_Tree_Dimension('50', '%');
     3373                }
     3374                if (!$weight instanceof Less_Tree_Dimension) {
     3375                        throw new Less_Exception_Compiler('The third argument to contrast must be a percentage' . ($weight instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
    32323376                }
    32333377
     
    32513395
    32523396        public function greyscale($color){
    3253                 return $this->desaturate($color, new Less_Tree_Dimension(100));
     3397                return $this->desaturate($color, new Less_Tree_Dimension(100,'%'));
    32543398        }
    32553399
     
    32583402                // filter: contrast(3.2);
    32593403                // should be kept as is, so check for color
    3260                 if( !property_exists($color,'rgb') ){
     3404                if (!$color instanceof Less_Tree_Color) {
    32613405                        return null;
    32623406                }
     
    32673411                        $dark = $this->rgba(0, 0, 0, 1.0);
    32683412                }
     3413
     3414                if (!$dark instanceof Less_Tree_Color) {
     3415                        throw new Less_Exception_Compiler('The second argument to contrast must be a color' . ($dark instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3416                }
     3417                if (!$light instanceof Less_Tree_Color) {
     3418                        throw new Less_Exception_Compiler('The third argument to contrast must be a color' . ($light instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3419                }
     3420
    32693421                //Figure out which is actually light and dark!
    32703422                if( $dark->luma() > $light->luma() ){
     
    33613513        }
    33623514
    3363     public function unit( $val, $unit = null) {
     3515        public function unit( $val, $unit = null) {
    33643516                if( !($val instanceof Less_Tree_Dimension) ){
    33653517                        throw new Less_Exception_Compiler('The first argument to unit must be a number' . ($val instanceof Less_Tree_Operation ? '. Have you forgotten parenthesis?' : '.') );
     
    33763528                }
    33773529                return new Less_Tree_Dimension($val->value, $unit );
    3378     }
     3530        }
    33793531
    33803532        public function convert($val, $unit){
     
    35163668                        if( $order[$j]->unit->toString() === "" && $unitClone ){
    35173669                                $temp = new Less_Tree_Dimension( $order[$j]->value, $unitClone);
    3518                                 $referenceUnified = $temp->unifiy();
     3670                                $referenceUnified = $temp->unify();
    35193671                        }else{
    35203672                                $referenceUnified = $order[$j]->unify();
     
    35503702
    35513703        public function argb($color) {
     3704                if (!$color instanceof Less_Tree_Color) {
     3705                        throw new Less_Exception_Compiler('The first argument to argb must be a color' . ($color instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     3706                }
     3707
    35523708                return new Less_Tree_Anonymous($color->toARGB());
    35533709        }
     
    38073963
    38083964        /**
    3809          * @param string $type
    3810          */
    3811         private static function Expected( $type, $arg ){
    3812 
    3813                 $debug = debug_backtrace();
    3814                 array_shift($debug);
    3815                 $last = array_shift($debug);
    3816                 $last = array_intersect_key($last,array('function'=>'','class'=>'','line'=>''));
    3817 
    3818                 $message = 'Object of type '.get_class($arg).' passed to darken function. Expecting `'.$type.'`. '.$arg->toCSS().'. '.print_r($last,true);
    3819                 throw new Less_Exception_Compiler($message);
    3820 
    3821         }
    3822 
    3823         /**
    38243965         * Php version of javascript's `encodeURIComponent` function
    38253966         *
     
    38553996        }
    38563997
    3857         public function multiply($color1, $color2 ){
     3998        public function multiply($color1 = null, $color2 = null ){
     3999                if (!$color1 instanceof Less_Tree_Color) {
     4000                        throw new Less_Exception_Compiler('The first argument to multiply must be a color' . ($color1 instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     4001                }
     4002                if (!$color2 instanceof Less_Tree_Color) {
     4003                        throw new Less_Exception_Compiler('The second argument to multiply must be a color' . ($color2 instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     4004                }
     4005
    38584006                return $this->colorBlend( array($this,'colorBlendMultiply'),  $color1, $color2 );
    38594007        }
     
    38634011        }
    38644012
    3865         public function screen($color1, $color2 ){
     4013        public function screen($color1 = null, $color2 = null ){
     4014                if (!$color1 instanceof Less_Tree_Color) {
     4015                        throw new Less_Exception_Compiler('The first argument to screen must be a color' . ($color1 instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     4016                }
     4017                if (!$color2 instanceof Less_Tree_Color) {
     4018                        throw new Less_Exception_Compiler('The second argument to screen must be a color' . ($color2 instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     4019                }
     4020
    38664021                return $this->colorBlend( array($this,'colorBlendScreen'),  $color1, $color2 );
    38674022        }
     
    38714026        }
    38724027
    3873         public function overlay($color1, $color2){
     4028        public function overlay($color1 = null, $color2 = null){
     4029                if (!$color1 instanceof Less_Tree_Color) {
     4030                        throw new Less_Exception_Compiler('The first argument to overlay must be a color' . ($color1 instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     4031                }
     4032                if (!$color2 instanceof Less_Tree_Color) {
     4033                        throw new Less_Exception_Compiler('The second argument to overlay must be a color' . ($color2 instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     4034                }
     4035
    38744036                return $this->colorBlend( array($this,'colorBlendOverlay'),  $color1, $color2 );
    38754037        }
     
    38824044        }
    38834045
    3884         public function softlight($color1, $color2){
     4046        public function softlight($color1 = null, $color2 = null){
     4047                if (!$color1 instanceof Less_Tree_Color) {
     4048                        throw new Less_Exception_Compiler('The first argument to softlight must be a color' . ($color1 instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     4049                }
     4050                if (!$color2 instanceof Less_Tree_Color) {
     4051                        throw new Less_Exception_Compiler('The second argument to softlight must be a color' . ($color2 instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     4052                }
     4053
    38854054                return $this->colorBlend( array($this,'colorBlendSoftlight'),  $color1, $color2 );
    38864055        }
     
    38974066        }
    38984067
    3899         public function hardlight($color1, $color2){
     4068        public function hardlight($color1 = null, $color2 = null){
     4069                if (!$color1 instanceof Less_Tree_Color) {
     4070                        throw new Less_Exception_Compiler('The first argument to hardlight must be a color' . ($color1 instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     4071                }
     4072                if (!$color2 instanceof Less_Tree_Color) {
     4073                        throw new Less_Exception_Compiler('The second argument to hardlight must be a color' . ($color2 instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     4074                }
     4075
    39004076                return $this->colorBlend( array($this,'colorBlendHardlight'),  $color1, $color2 );
    39014077        }
     
    39054081        }
    39064082
    3907         public function difference($color1, $color2) {
     4083        public function difference($color1 = null, $color2 = null) {
     4084                if (!$color1 instanceof Less_Tree_Color) {
     4085                        throw new Less_Exception_Compiler('The first argument to difference must be a color' . ($color1 instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     4086                }
     4087                if (!$color2 instanceof Less_Tree_Color) {
     4088                        throw new Less_Exception_Compiler('The second argument to difference must be a color' . ($color2 instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     4089                }
     4090
    39084091                return $this->colorBlend( array($this,'colorBlendDifference'),  $color1, $color2 );
    39094092        }
     
    39134096        }
    39144097
    3915         public function exclusion( $color1, $color2 ){
     4098        public function exclusion( $color1 = null, $color2 = null ){
     4099                if (!$color1 instanceof Less_Tree_Color) {
     4100                        throw new Less_Exception_Compiler('The first argument to exclusion must be a color' . ($color1 instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     4101                }
     4102                if (!$color2 instanceof Less_Tree_Color) {
     4103                        throw new Less_Exception_Compiler('The second argument to exclusion must be a color' . ($color2 instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     4104                }
     4105
    39164106                return $this->colorBlend( array($this,'colorBlendExclusion'),  $color1, $color2 );
    39174107        }
     
    39214111        }
    39224112
    3923         public function average($color1, $color2){
     4113        public function average($color1 = null, $color2 = null){
     4114                if (!$color1 instanceof Less_Tree_Color) {
     4115                        throw new Less_Exception_Compiler('The first argument to average must be a color' . ($color1 instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     4116                }
     4117                if (!$color2 instanceof Less_Tree_Color) {
     4118                        throw new Less_Exception_Compiler('The second argument to average must be a color' . ($color2 instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     4119                }
     4120
    39244121                return $this->colorBlend( array($this,'colorBlendAverage'),  $color1, $color2 );
    39254122        }
     
    39304127        }
    39314128
    3932         public function negation($color1, $color2 ){
     4129        public function negation($color1 = null, $color2 = null ){
     4130                if (!$color1 instanceof Less_Tree_Color) {
     4131                        throw new Less_Exception_Compiler('The first argument to negation must be a color' . ($color1 instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     4132                }
     4133                if (!$color2 instanceof Less_Tree_Color) {
     4134                        throw new Less_Exception_Compiler('The second argument to negation must be a color' . ($color2 instanceof Less_Tree_Expression ? ' (did you forgot commas?)' : '') );
     4135                }
     4136
    39334137                return $this->colorBlend( array($this,'colorBlendNegation'),  $color1, $color2 );
    39344138        }
     
    40334237
    40344238                // Non-compressed
    4035                 $tabSetStr = "\n".str_repeat( '  ' , Less_Environment::$tabLevel-1 );
    4036                 $tabRuleStr = $tabSetStr.'  ';
     4239                $tabSetStr = "\n".str_repeat( Less_Parser::$options['indentation'] , Less_Environment::$tabLevel-1 );
     4240                $tabRuleStr = $tabSetStr.Less_Parser::$options['indentation'];
    40374241
    40384242                $output->add( " {" );
     
    40714275        }
    40724276
    4073 }
     4277}
     4278 
    40744279
    40754280/**
     
    47054910                //
    47064911                if( $alpha < 1 ){
    4707                         if( $alpha === 0 && isset($this->isTransparentKeyword) && $this->isTransparentKeyword ){
     4912                        if( ( $alpha === 0 || $alpha === 0.0 ) && isset($this->isTransparentKeyword) && $this->isTransparentKeyword ){
    47084913                                return 'transparent';
    47094914                        }
     
    51585363
    51595364                                if( Less_Parser::$options['strictUnits'] && $other->unit->toString() !== $unit->toCSS() ){
    5160                                         throw new Less_Exception_Compiler("Incompatible units. Change the units or use the unit function. Bad units: '".$unit->toString() . "' and ".$other->unit->toString()+"'.");
     5365                                        throw new Less_Exception_Compiler("Incompatible units. Change the units or use the unit function. Bad units: '" . $unit->toString() . "' and " . $other->unit->toString() . "'.");
    51615366                                }
    51625367
     
    57915996                }
    57925997
     5998                // optional (need to be before "CSS" to support optional CSS imports. CSS should be checked only if empty($this->currentFileInfo))
     5999                if( isset($this->options['optional']) && $this->options['optional'] && !file_exists($full_path) && (!$evald->css || !empty($this->currentFileInfo))) {
     6000                        return array();
     6001                }
     6002
    57936003
    57946004                // css ?
     
    58406050                                                return array( $full_path, $uri );
    58416051                                        }
    5842                                 }else{
     6052                                }elseif( !empty($rootpath) ){
     6053
     6054
     6055                                        if( $rooturi ){
     6056                                                if( strpos($evald_path,$rooturi) === 0 ){
     6057                                                        $evald_path = substr( $evald_path, strlen($rooturi) );
     6058                                                }
     6059                                        }
     6060
    58436061                                        $path = rtrim($rootpath,'/\\').'/'.ltrim($evald_path,'/\\');
    58446062
     
    58476065                                                $uri = Less_Environment::normalizePath(dirname($rooturi.$evald_path));
    58486066                                                return array( $full_path, $uri );
     6067                                        } elseif( file_exists($path.'.less') ){
     6068                                                $full_path = Less_Environment::normalizePath($path.'.less');
     6069                                                $uri = Less_Environment::normalizePath(dirname($rooturi.$evald_path.'.less'));
     6070                                                return array( $full_path, $uri );
    58496071                                        }
    58506072                                }
     
    58886110        private function Skip($path, $env){
    58896111
    5890                 $path = realpath($path);
     6112                $path = Less_Parser::winPath(realpath($path));
    58916113
    58926114                if( $path && Less_Parser::FileParsed($path) ){
     
    59016123        }
    59026124}
    5903 
    59046125 
    59056126
     
    61746395        public $currentFileInfo;
    61756396        public $type = 'NameValue';
     6397        public $important = '';
    61766398
    61776399        public function __construct($name, $value = null, $index = null, $currentFileInfo = null ){
     
    61886410                        . Less_Environment::$_outputMap[': ']
    61896411                        . $this->value
     6412                        . $this->important
    61906413                        . (((Less_Environment::$lastRule && Less_Parser::$options['compress'])) ? "" : ";")
    61916414                        , $this->currentFileInfo, $this->index);
     
    61956418                return $this;
    61966419        }
     6420
     6421        public function makeImportant(){
     6422                $new = new Less_Tree_NameValue($this->name, $this->value, $this->index, $this->currentFileInfo);
     6423                $new->important = ' !important';
     6424                return $new;
     6425        }
     6426
     6427
    61976428}
    61986429 
     
    67997030                $important_rules = array();
    68007031                foreach($this->rules as $rule){
    6801                         if( $rule instanceof Less_Tree_Rule || $rule instanceof Less_Tree_Ruleset ){
     7032                        if( $rule instanceof Less_Tree_Rule || $rule instanceof Less_Tree_Ruleset || $rule instanceof Less_Tree_NameValue ){
    68027033                                $important_rules[] = $rule->makeImportant();
    68037034                        }else{
     
    69007131                if( !Less_Parser::$options['compress'] ){
    69017132                        if( Less_Environment::$tabLevel ){
    6902                                 $tabRuleStr = "\n".str_repeat( '  ' , Less_Environment::$tabLevel );
    6903                                 $tabSetStr = "\n".str_repeat( '  ' , Less_Environment::$tabLevel-1 );
     7133                                $tabRuleStr = "\n".str_repeat( Less_Parser::$options['indentation'] , Less_Environment::$tabLevel );
     7134                                $tabSetStr = "\n".str_repeat( Less_Parser::$options['indentation'] , Less_Environment::$tabLevel-1 );
    69047135                        }else{
    69057136                                $tabSetStr = $tabRuleStr = "\n";
     
    77527983                }
    77537984
    7754                 throw new Less_Exception_Compiler("variable " . $name . " is undefined in file ".$this->currentFileInfo["filename"], null, $this->index );
     7985                throw new Less_Exception_Compiler("variable " . $name . " is undefined in file ".$this->currentFileInfo["filename"], null, $this->index, $this->currentFileInfo);
    77557986        }
    77567987
     
    78658096                                $defaultResult = $defTrue;
    78668097                                if( ($count[$defTrue] + $count[$defFalse]) > 1 ){
    7867                                         throw new Exception( 'Ambiguous use of `default()` found when matching for `'. $this->format($args) + '`' );
     8098                                        throw new Exception( 'Ambiguous use of `default()` found when matching for `' . $this->format($args) . '`' );
    78688099                                }
    78698100                        }
     
    79188149                                $argValue = '';
    79198150                                if( $a['name'] ){
    7920                                         $argValue += $a['name']+':';
     8151                                        $argValue .= $a['name'] . ':';
    79218152                                }
    79228153                                if( is_object($a['value']) ){
    7923                                         $argValue += $a['value']->toCSS();
     8154                                        $argValue .= $a['value']->toCSS();
    79248155                                }else{
    7925                                         $argValue += '???';
     8156                                        $argValue .= '???';
    79268157                                }
    79278158                                $message[] = $argValue;
     
    79758206
    79768207        // less.js : /lib/less/tree/mixin.js : tree.mixin.Definition
    7977         public function __construct($name, $params, $rules, $condition, $variadic = false, $frames = null ){
     8208        public function __construct($name, $params, $rules, $condition, $variadic = false, $frames = array() ){
    79788209                $this->name = $name;
    79798210                $this->selectors = array(new Less_Tree_Selector(array( new Less_Tree_Element(null, $name))));
     
    81508381                }
    81518382
     8383                // set array to prevent error on array_merge
     8384                if(!is_array($this->frames)) {
     8385             $this->frames = array();
     8386        }
     8387
    81528388                $frame = $this->compileParams($env, array_merge($this->frames,$env->frames), $args );
    81538389
     
    81588394                                , $env->frames          // the current environment frames
    81598395                        );
     8396
     8397                $compile_env->functions = $env->functions;
    81608398
    81618399                return (bool)$this->condition->compile($compile_env);
     
    86298867                                }
    86308868
    8631                                 throw new Less_Exception_Parser("extend circular reference detected. One of the circular extends is currently:"+$selectorOne+":extend(" + $selectorTwo+")");
     8869                                throw new Less_Exception_Parser("extend circular reference detected. One of the circular extends is currently:" . $selectorOne . ":extend(" . $selectorTwo . ")");
    86328870                        }
    86338871
     
    93319569        protected function getInput(){
    93329570
    9333                 if( !$this->input && $this->currentFile && $this->currentFile['filename'] ){
     9571                if( !$this->input && $this->currentFile && $this->currentFile['filename'] && file_exists($this->currentFile['filename']) ){
    93349572                        $this->input = file_get_contents( $this->currentFile['filename'] );
    93359573                }
     
    93769614        public function getLineNumber(){
    93779615                if( $this->index ){
    9378                         return substr_count($this->input, "\n", 0, $this->index) + 1;
     9616                        // https://bugs.php.net/bug.php?id=49790
     9617                        if (ini_get("mbstring.func_overload")) {
     9618                                return substr_count(substr($this->input, 0, $this->index), "\n") + 1;
     9619                        } else {
     9620                                return substr_count($this->input, "\n", 0, $this->index) + 1;
     9621                        }
    93799622                }
    93809623                return 1;
     
    95179760                                        }
    95189761                                        if ($matched) { continue; }
    9519                                         return $this->fail("unmatched `" + chr($cc) + "`", $currentChunkStartIndex);
     9762                                        return $this->fail("unmatched `" . chr($cc) . "`", $currentChunkStartIndex);
    95209763
    95219764                                // /, check for comment
     
    1000910252
    1001010253                $this->SetOptions($options);
    10011 
    10012 
    10013                 // fix windows paths
    10014                 if( !empty($this->options['sourceMapRootpath']) ){
    10015                         $this->options['sourceMapRootpath'] = str_replace('\\', '/', $this->options['sourceMapRootpath']);
    10016                         $this->options['sourceMapRootpath'] = rtrim($this->options['sourceMapRootpath'],'/').'/';
    10017                 }
     10254               
     10255                $this->options['sourceMapRootpath'] = $this->fixWindowsPath($this->options['sourceMapRootpath'], true);
     10256                $this->options['sourceMapBasepath'] = $this->fixWindowsPath($this->options['sourceMapBasepath'], true);
    1001810257        }
    1001910258
     
    1008510324        protected function normalizeFilename($filename){
    1008610325
    10087                 $filename = str_replace('\\', '/', $filename);
     10326                $filename = $this->fixWindowsPath($filename);
     10327
    1008810328                $rootpath = $this->getOption('sourceMapRootpath');
    1008910329                $basePath = $this->getOption('sourceMapBasepath');
     
    1026810508        }
    1026910509
     10510        /**
     10511         * fix windows paths
     10512         * @param  string $path
     10513         * @return string     
     10514         */
     10515        public function fixWindowsPath($path, $addEndSlash = false){
     10516                $slash = ($addEndSlash) ? '/' : '';
     10517                if( !empty($path) ){
     10518                        $path = str_replace('\\', '/', $path);
     10519                        $path = rtrim($path,'/') . $slash;
     10520                }
     10521
     10522                return $path;
     10523        }
     10524
    1027010525}
  • _plugins_/less-css/trunk/less.php/README

    r83499 r102567  
    11http://lessphp.gpeasy.com/
    2 version 1.7.0.2
     2version 1.7.0.10
  • _plugins_/less-css/trunk/less.php/Version.php

    r83499 r102567  
    99class Less_Version{
    1010
    11         const version = '1.7.0.2';                      // The current build number of less.php
    12         const less_version = '1.7';                     // The less.js version that this build should be compatible with
    13     const cache_version = '170';                // The parser cache version
     11        const version = '1.7.0.10';                     // The current build number of less.php
     12        const less_version = '1.7.0';           // The less.js version that this build should be compatible with
     13        const cache_version = '170';            // The parser cache version
    1414
    1515}
  • _plugins_/less-css/trunk/lesscss_fonctions.php

    r101098 r102567  
    2020function lesscss_compile($style, $contexte = array()){
    2121        static $import_dirs = null;
    22         require_once 'less.php/Less.php';
     22
     23        spip_timer('lesscss_compile');
     24        if (!class_exists('Less_Parser')){
     25                require_once 'less.php/Less.php';
     26        }
     27        if (!function_exists('lire_config')) {
     28                include_spip('inc/config');
     29        }
    2330
    2431        if (is_null($import_dirs)){
     
    3138
    3239        $parser = new Less_Parser();
    33         include_spip('inc/config');
    3440        $parser->setOption('sourceMap', lire_config('lesscss/activer_sourcemaps', false) == "on" ? true : false);
    3541        $parser->setImportDirs($import_dirs);
     
    5359                }
    5460
     61                spip_log('lesscss_compile '.(isset($contexte['file'])?$contexte['file']:substr($style,0,100)).' :: '.spip_timer('lesscss_compile'), 'less');
    5562                return $out;
    5663        }
  • _plugins_/less-css/trunk/plugin.xml

    r101097 r102567  
    55        <auteur>Cedric Morin</auteur>
    66        <licence>MIT</licence>
    7         <version>1.0.9</version>
     7        <version>1.0.10</version>
    88        <etat>stable</etat>
    99        <icon>img/lesscss-32.png</icon>
Note: See TracChangeset for help on using the changeset viewer.