Changeset 118014 in spip-zone


Ignore:
Timestamp:
Oct 1, 2019, 4:12:59 PM (5 months ago)
Author:
cedric@…
Message:

Mise a jour de la lib scssphp et fix le force refresh qui etait casse pour un pb de nommage

Location:
_plugins_/scssphp/trunk
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/scssphp/trunk/lib/scssphp/composer.json

    r115547 r118014  
    2424    },
    2525    "autoload-dev": {
    26         "psr-4": { "ScssPhp\\ScssPhp\\Test\\": "tests/" }
     26        "psr-4": { "ScssPhp\\ScssPhp\\Tests\\": "tests/" }
    2727    },
    2828    "require": {
    29         "php": "^5.6.0 || ^7"
     29        "php": ">=5.6.0",
     30        "ext-json": "*",
     31        "ext-ctype": "*"
    3032    },
    3133    "require-dev": {
    3234        "squizlabs/php_codesniffer": "~2.5",
    33         "phpunit/phpunit": "~4.6",
     35        "phpunit/phpunit": "^5.7 || ^6.5 || ^7.5 || ^8.3",
    3436        "twbs/bootstrap": "~4.3",
    3537        "zurb/foundation": "~6.5"
    3638    },
     39    "minimum-stability": "dev",
    3740    "bin": ["bin/pscss"],
    3841    "archive": {
  • _plugins_/scssphp/trunk/lib/scssphp/src/Cache.php

    r116185 r118014  
    5858    {
    5959        // check $cacheDir
    60         if (isset($options['cache_dir'])) {
    61             self::$cacheDir = $options['cache_dir'];
     60        if (isset($options['cacheDir'])) {
     61            self::$cacheDir = $options['cacheDir'];
    6262        }
    6363
    6464        if (empty(self::$cacheDir)) {
    65             throw new Exception('cache_dir not set');
     65            throw new Exception('cacheDir not set');
    6666        }
    6767
     
    7575
    7676        if (isset($options['forceRefresh'])) {
    77             self::$forceRefresh = $options['force_refresh'];
     77            self::$forceRefresh = $options['forceRefresh'];
    7878        }
    7979
     
    9898        $fileCache = self::$cacheDir . self::cacheName($operation, $what, $options);
    9999
    100         if ((! self::$forceRefresh || (self::$forceRefresh === 'once' &&
     100        if (((self::$forceRefresh === false) || (self::$forceRefresh === 'once' &&
    101101            isset(self::$refreshed[$fileCache]))) && file_exists($fileCache)
    102102        ) {
     
    177177        self::$cacheDir = rtrim(self::$cacheDir, '/') . '/';
    178178
    179         if (! file_exists(self::$cacheDir)) {
     179        if (! is_dir(self::$cacheDir)) {
    180180            if (! mkdir(self::$cacheDir)) {
    181181                throw new Exception('Cache directory couldn\'t be created: ' . self::$cacheDir);
    182182            }
    183         } elseif (! is_dir(self::$cacheDir)) {
    184             throw new Exception('Cache directory doesn\'t exist: ' . self::$cacheDir);
    185         } elseif (! is_writable(self::$cacheDir)) {
     183        }
     184
     185        if (! is_writable(self::$cacheDir)) {
    186186            throw new Exception('Cache directory isn\'t writable: ' . self::$cacheDir);
    187187        }
  • _plugins_/scssphp/trunk/lib/scssphp/src/Colors.php

    r117605 r118014  
    180180    /**
    181181     * Convert named color in a [r,g,b[,a]] array
     182     *
    182183     * @param string $colorName
     184     *
    183185     * @return array|null
    184186     */
     
    190192            // only case with opacity is transparent, with opacity=0, so we can intval on opacity also
    191193            $rgba = array_map('intval', $rgba);
     194
    192195            return $rgba;
    193196        }
     197
    194198        return null;
    195199    }
     
    197201    /**
    198202     * Reverse conversion : from RGBA to a color name if possible
    199      * @param int $r
    200      * @param int $g
    201      * @param int $b
    202      * @param int $a
     203     *
     204     * @param integer $r
     205     * @param integer $g
     206     * @param integer $b
     207     * @param integer $a
     208     *
    203209     * @return string|null
    204210     */
     
    207213        static $reverseColorTable = null;
    208214
    209         if (!is_numeric($r) || !is_numeric($g) || !is_numeric($b) || !is_numeric($a)) {
     215        if (! is_numeric($r) || ! is_numeric($g) || ! is_numeric($b) || ! is_numeric($a)) {
    210216            return null;
    211217        }
     
    213219        if ($a < 1) {
    214220            # specific case we dont' revert according to spec
    215             #if (! $a && !$r && !$g && !$b) {
     221            #if (! $a && ! $r && ! $g && ! $b) {
    216222            #    return 'transparent';
    217223            #}
     
    222228        if (is_null($reverseColorTable)) {
    223229            $reverseColorTable = [];
     230
    224231            foreach (static::$cssColors as $name => $rgb_str) {
    225232                $rgb_str = explode(',', $rgb_str);
     233
    226234                if (count($rgb_str) == 3) {
    227235                    $reverseColorTable[intval($rgb_str[0])][intval($rgb_str[1])][intval($rgb_str[2])] = $name;
     
    233241            return $reverseColorTable[intval($r)][intval($g)][intval($b)];
    234242        }
     243
    235244        return null;
    236245    }
  • _plugins_/scssphp/trunk/lib/scssphp/src/Compiler.php

    r117605 r118014  
    165165    /**
    166166     * Constructor
     167     *
     168     * @param array|null $cacheOptions
    167169     */
    168170    public function __construct($cacheOptions = null)
     
    174176            $this->cache = new Cache($cacheOptions);
    175177        }
    176         $this->stderr         = fopen('php://stderr', 'w');
    177     }
    178 
     178
     179        $this->stderr = fopen('php://stderr', 'w');
     180    }
     181
     182    /**
     183     * Get compiler options
     184     *
     185     * @return array
     186     */
    179187    public function getCompileOptions()
    180188    {
     
    193201
    194202    /**
    195      * Set an alternartive error output stream, for testing purpose only
    196      * @param $handle
     203     * Set an alternative error output stream, for testing purpose only
     204     *
     205     * @param resource $handle
    197206     */
    198207    public function setErrorOuput($handle)
     
    221230                // check if any dependency file changed before accepting the cache
    222231                foreach ($cache['dependencies'] as $file => $mtime) {
    223                     if (! file_exists($file) || filemtime($file) !== $mtime) {
     232                    if (! is_file($file) || filemtime($file) !== $mtime) {
    224233                        unset($cache);
    225234                        break;
     
    339348     * Push extends
    340349     *
    341      * @param array     $target
    342      * @param array     $origin
    343      * @param \stdClass $block
     350     * @param array      $target
     351     * @param array      $origin
     352     * @param array|null $block
    344353     */
    345354    protected function pushExtends($target, $origin, $block)
     
    853862
    854863                $media->children = [[Type::T_BLOCK, $wrapped]];
     864
    855865                if (isset($this->lineNumberStyle)) {
    856866                    $annotation = $this->makeOutputBlock(Type::T_COMMENT);
     
    12011211                }
    12021212
    1203                 if (is_object($s) && get_class($s) === 'ScssPhp\ScssPhp\Node\Number') {
     1213                if (is_object($s) && $s instanceof Node\Number) {
    12041214                    return $this->testWithWithout('keyframes', $with, $without);
    12051215                }
     
    14101420            $this->compileChildrenNoReturn($block->children, $out, $block->selfParent);
    14111421
    1412             // and revert for the following childs of the same block
     1422            // and revert for the following children of the same block
    14131423            if ($selfParentSelectors) {
    14141424                $block->selfParent->selectors = $selfParentSelectors;
     
    14211431    }
    14221432
     1433
     1434    /**
     1435     * Compile the value of a comment that can have interpolation
     1436     * @param $value
     1437     * @param bool $pushEnv
     1438     * @return array|mixed|string
     1439     */
     1440    protected function compileCommentValue($value, $pushEnv = false)
     1441    {
     1442        $c = $value[1];
     1443        if (isset($value[2])) {
     1444            if ($pushEnv) {
     1445                $this->pushEnv();
     1446                $storeEnv = $this->storeEnv;
     1447                $this->storeEnv = $this->env;
     1448            }
     1449            try {
     1450                $c = $this->compileValue($value[2]);
     1451            } catch (\Exception $e) {
     1452                // ignore error in comment compilation which are only interpolation
     1453            }
     1454            if ($pushEnv) {
     1455                $this->storeEnv = $storeEnv;
     1456                $this->popEnv();
     1457            }
     1458        }
     1459        return $c;
     1460    }
     1461
    14231462    /**
    14241463     * Compile root level comment
     
    14291468    {
    14301469        $out = $this->makeOutputBlock(Type::T_COMMENT);
    1431         $out->lines[] = is_string($block[1]) ? $block[1] : $this->compileValue($block[1]);
     1470        $out->lines[] = $this->compileCommentValue($block, true);
    14321471
    14331472        $this->scope->children[] = $out;
     
    20312070        }
    20322071
    2033         $m1 = '';
    2034         $t1 = '';
    2035 
    20362072        if (count($type1) > 1) {
    20372073            $m1 = strtolower($type1[0]);
    20382074            $t1 = strtolower($type1[1]);
    20392075        } else {
     2076            $m1 = '';
    20402077            $t1 = strtolower($type1[0]);
    20412078        }
    2042 
    2043         $m2 = '';
    2044         $t2 = '';
    20452079
    20462080        if (count($type2) > 1) {
     
    20482082            $t2 = strtolower($type2[1]);
    20492083        } else {
     2084            $m2 = '';
    20502085            $t2 = strtolower($type2[0]);
    20512086        }
     
    21162151                if ($path[0] !== Type::T_STRING) {
    21172152                    $this->appendRootDirective('@import ' . $this->compileValue($rawPath) . ';', $out);
     2153
    21182154                    return false;
    21192155                }
     
    21822218
    21832219    /**
    2184      * Append lines to the courrent output block:
     2220     * Append lines to the current output block:
    21852221     * directly to the block or through a child if necessary
    21862222     *
    21872223     * @param \ScssPhp\ScssPhp\Formatter\OutputBlock $out
    21882224     * @param string                                 $type
    2189      * @param string                                 $line
     2225     * @param string|mixed                           $line
    21902226     */
    21912227    protected function appendOutputLine(OutputBlock $out, $type, $line)
     
    21972233
    21982234            if (end($parent->children) !== $out) {
    2199                 $outWrite = &$parent->children[count($parent->children)-1];
    2200             }
    2201 
    2202             if (!is_string($line)) {
    2203                 $line = $this->compileValue($line);
     2235                $outWrite = &$parent->children[count($parent->children) - 1];
    22042236            }
    22052237        }
     
    22072239        // check if it's a flat output or not
    22082240        if (count($out->children)) {
    2209             $lastChild = &$out->children[count($out->children) -1];
     2241            $lastChild = &$out->children[count($out->children) - 1];
    22102242
    22112243            if ($lastChild->depth === $out->depth && is_null($lastChild->selectors) && ! count($lastChild->children)) {
     
    23022334
    23032335                    $shouldSet = $isDefault &&
    2304                         (($result = $this->get($name[1], false)) === null ||
     2336                        (is_null($result = $this->get($name[1], false)) ||
    23052337                        $result === static::$null);
    23062338
     
    23132345                $compiledName = $this->compileValue($name);
    23142346
    2315                 // handle shorthand syntax: size / line-height
    2316                 if ($compiledName === 'font' || $compiledName === 'grid-row' || $compiledName === 'grid-column') {
     2347                // handle shorthand syntaxes : size / line-height...
     2348                if (in_array($compiledName, ['font', 'grid-row', 'grid-column', 'border-radius'])) {
    23172349                    if ($value[0] === Type::T_VARIABLE) {
    23182350                        // if the font value comes from variable, the content is already reduced
     
    23212353                    }
    23222354
    2323                     $fontValue=&$value;
     2355                    $shorthandValue=&$value;
    23242356
    23252357                    if ($value[0] === Type::T_LIST && $value[1]==',') {
    23262358                        // this is the case if more than one font is given: example: "font: 400 1em/1.3 arial,helvetica"
    23272359                        // we need to handle the first list element
    2328                         $fontValue=&$value[2][0];
     2360                        $shorthandValue=&$value[2][0];
    23292361                    }
    23302362
    2331                     if ($fontValue[0] === Type::T_EXPRESSION && $fontValue[1] === '/') {
    2332                         $fontValue = $this->expToString($fontValue);
    2333                     } elseif ($fontValue[0] === Type::T_LIST) {
    2334                         foreach ($fontValue[2] as &$item) {
     2363                    if ($shorthandValue[0] === Type::T_EXPRESSION && $shorthandValue[1] === '/') {
     2364                        $shorthandValue = $this->expToString($shorthandValue);
     2365                    } elseif ($shorthandValue[0] === Type::T_LIST) {
     2366                        foreach ($shorthandValue[2] as &$item) {
    23352367                            if ($item[0] === Type::T_EXPRESSION && $item[1] === '/') {
    23362368                                $item = $this->expToString($item);
     
    23652397                }
    23662398
    2367                 $this->appendOutputLine($out, Type::T_COMMENT, $child[1]);
     2399                $line = $this->compileCommentValue($child, true);
     2400                $this->appendOutputLine($out, Type::T_COMMENT, $line);
    23682401                break;
    23692402
     
    23842417                        $selectors = $out->selectors;
    23852418
    2386                         if (!$selectors && isset($child['selfParent'])) {
     2419                        if (! $selectors && isset($child['selfParent'])) {
    23872420                            $selectors = $this->multiplySelectors($this->env, $child['selfParent']);
    23882421                        }
     
    26042637
    26052638                $storeEnv = $this->storeEnv;
    2606 
    26072639                $varsUsing = [];
     2640
    26082641                if (isset($argUsing) && isset($argContent)) {
    26092642                    // Get the arguments provided for the content with the names provided in the "using" argument list
     
    27462779     * @param boolean $inExp
    27472780     *
    2748      * @return array|\ScssPhp\ScssPhp\Node\Number
     2781     * @return null|string|array|\ScssPhp\ScssPhp\Node\Number
    27492782     */
    27502783    protected function reduce($value, $inExp = false)
    27512784    {
     2785        if (is_null($value)) {
     2786            return null;
     2787        }
    27522788
    27532789        switch ($value[0]) {
     
    34183454     * @param array $value
    34193455     *
    3420      * @return string
     3456     * @return string|array
    34213457     */
    34223458    public function compileValue($value)
     
    34383474                $g = $this->compileRGBAValue($g);
    34393475                $b = $this->compileRGBAValue($b);
     3476
    34403477                if (count($value) === 5) {
    34413478                    $alpha = $this->compileRGBAValue($value[4], true);
    3442                     if (!is_numeric($alpha) || $alpha < 1) {
     3479
     3480                    if (! is_numeric($alpha) || $alpha < 1) {
    34433481                        $colorName = Colors::RGBaToColorName($r, $g, $b, $alpha);
    3444                         if (!is_null($colorName)) {
     3482
     3483                        if (! is_null($colorName)) {
    34453484                            return $colorName;
    34463485                        }
     
    34613500
    34623501                $colorName = Colors::RGBaToColorName($r, $g, $b);
    3463                 if (!is_null($colorName)) {
     3502
     3503                if (! is_null($colorName)) {
    34643504                    return $colorName;
    34653505                }
     
    35323572                $delim = $left[1];
    35333573
    3534                 if ($delim && $delim !== ' ' && !$whiteLeft) {
     3574                if ($delim && $delim !== ' ' && ! $whiteLeft) {
    35353575                    $delim .= ' ';
    35363576                }
     
    36013641            case Type::T_NULL:
    36023642                return 'null';
     3643
     3644            case Type::T_COMMENT:
     3645                return $this->compileCommentValue($value);
    36033646
    36043647            default:
     
    38153858        list($this->env, $this->storeEnv) = $store;
    38163859
    3817         if ($childQueries === null) {
     3860        if (is_null($childQueries)) {
    38183861            $childQueries = $parentQueries;
    38193862        } else {
     
    40434086
    40444087        if ($shouldThrow) {
    4045             $this->throwError("Undefined variable \$$name" . ($maxDepth<=0 ? " (infinite recursion)" : ""));
     4088            $this->throwError("Undefined variable \$$name" . ($maxDepth <= 0 ? " (infinite recursion)" : ""));
    40464089        }
    40474090
     
    40604103    protected function has($name, Environment $env = null)
    40614104    {
    4062         return $this->get($name, false, $env) !== null;
     4105        return ! is_null($this->get($name, false, $env));
    40634106    }
    40644107
     
    41344177    public function addParsedFile($path)
    41354178    {
    4136         if (isset($path) && file_exists($path)) {
     4179        if (isset($path) && is_file($path)) {
    41374180            $this->parsedFiles[realpath($path)] = filemtime($path);
    41384181        }
     
    43194362
    43204363        // for "normal" scss imports (ignore vanilla css and external requests)
    4321         if (! preg_match('/\.css$|^https?:\/\//', $url)) {
     4364        if (! preg_match('~\.css$|^https?://~', $url)) {
    43224365            // try both normal and the _partial filename
    4323             $urls = [$url, preg_replace('/[^\/]+$/', '_\0', $url)];
     4366            $urls = [$url, preg_replace('~[^/]+$~', '_\0', $url)];
    43244367        }
    43254368
     
    43374380                    $full = $dir . $separator . $full;
    43384381
    4339                     if ($this->fileExists($file = $full . '.scss') ||
    4340                         ($hasExtension && $this->fileExists($file = $full))
     4382                    if (is_file($file = $full . '.scss') ||
     4383                        ($hasExtension && is_file($file = $full))
    43414384                    ) {
    43424385                        return $file;
     
    43474390                $file = call_user_func($dir, $url);
    43484391
    4349                 if ($file !== null) {
     4392                if (! is_null($file)) {
    43504393                    return $file;
    43514394                }
     
    44454488                    $callStackMsg[] = $msg;
    44464489
    4447                     if (! is_null($limit) && $ncall>$limit) {
     4490                    if (! is_null($limit) && $ncall > $limit) {
    44484491                        break;
    44494492                    }
     
    44654508    {
    44664509        for ($env = $this->env; $env; $env = $env->parent) {
     4510            if (! $env->block) {
     4511                continue;
     4512            }
     4513
    44674514            $file = $this->sourceNames[$env->block->sourceIndex];
    44684515
     
    44724519            }
    44734520        }
    4474     }
    4475 
    4476     /**
    4477      * Does file exist?
    4478      *
    4479      * @param string $name
    4480      *
    4481      * @return boolean
    4482      */
    4483     protected function fileExists($name)
    4484     {
    4485         return file_exists($name) && is_file($name);
    44864521    }
    44874522
     
    46044639     *
    46054640     * @param string $functionName
    4606      * @param array $prototype
    4607      * @param array $args
     4641     * @param array  $prototypes
     4642     * @param array  $args
    46084643     *
    46094644     * @return array
     
    46394674                if ($arg[1][0] === Type::T_LIST && count($arg[1][2]) === 3) {
    46404675                    $last = end($arg[1][2]);
     4676
    46414677                    if ($last[0] === Type::T_EXPRESSION && $last[1] === '/') {
    46424678                        array_pop($arg[1][2]);
     
    47434779     * Apply argument values per definition
    47444780     *
    4745      * @param array $argDef
    4746      * @param array $argValues
    4747      * @param bool $storeInEnv
    4748      * @param bool $reduce
     4781     * @param array   $argDef
     4782     * @param array   $argValues
     4783     * @param boolean $storeInEnv
     4784     * @param boolean $reduce
    47494785     *   only used if $storeInEnv = false
     4786     *
     4787     * @return array
     4788     *
    47504789     * @throws \Exception
    47514790     */
     
    48014840                    foreach ($val[2] as $name => $item) {
    48024841                        if (! is_numeric($name)) {
    4803                             if (!isset($args[$name])) {
     4842                            if (! isset($args[$name])) {
    48044843                                foreach (array_keys($args) as $an) {
    48054844                                    if (str_replace("_", "-", $an) === str_replace("_", "-", $name)) {
     
    48294868
    48304869                        if (! is_numeric($name)) {
    4831                             if (!isset($args[$name])) {
     4870                            if (! isset($args[$name])) {
    48324871                                foreach (array_keys($args) as $an) {
    48334872                                    if (str_replace("_", "-", $an) === str_replace("_", "-", $name)) {
     
    49314970        }
    49324971
    4933         if ($value === null) {
     4972        if (is_null($value)) {
    49344973            return static::$null;
    49354974        }
     
    49454984        $value = [Type::T_KEYWORD, $value];
    49464985        $color = $this->coerceColor($value);
     4986
    49474987        if ($color) {
    49484988            return $color;
     
    49985038                    case Type::T_LIST:
    49995039                    case Type::T_MAP:
     5040                    case Type::T_STRING:
    50005041                        break;
    50015042
     
    50455086        switch ($value[0]) {
    50465087            case Type::T_COLOR:
    5047                 for ($i=1; $i<=3; $i++) {
    5048                     if (!is_numeric($value[$i])) {
     5088                for ($i = 1; $i <= 3; $i++) {
     5089                    if (! is_numeric($value[$i])) {
    50495090                        $cv = $this->compileRGBAValue($value[$i]);
    5050                         if (!is_numeric($cv)) {
     5091
     5092                        if (! is_numeric($cv)) {
    50515093                            return null;
    50525094                        }
     5095
    50535096                        $value[$i] = $cv;
    50545097                    }
     5098
    50555099                    if (isset($value[4])) {
    5056                         if (!is_numeric($value[4])) {
     5100                        if (! is_numeric($value[4])) {
    50575101                            $cv = $this->compileRGBAValue($value[4], true);
    5058                             if (!is_numeric($cv)) {
     5102
     5103                            if (! is_numeric($cv)) {
    50595104                                return null;
    50605105                            }
     5106
    50615107                            $value[4] = $cv;
    50625108                        }
     
    50715117                        $color = $value[2];
    50725118                        array_unshift($color, Type::T_COLOR);
     5119
    50735120                        return $this->coerceColor($color);
    50745121                    }
    50755122                }
     5123
    50765124                return null;
    50775125
    50785126            case Type::T_KEYWORD:
    5079                 if (!is_string($value[1])) {
     5127                if (! is_string($value[1])) {
    50805128                    return null;
    50815129                }
     
    50855133                if (preg_match('/^#([0-9a-f]+)$/i', $name, $m)) {
    50865134                    $nofValues = strlen($m[1]);
    5087                     if (in_array($nofValues, [3,4,6,8])) {
     5135
     5136                    if (in_array($nofValues, [3, 4, 6, 8])) {
    50885137                        $nbChannels = 3;
    5089                         $color = [];
    5090                         $num = hexdec($m[1]);
     5138                        $color      = [];
     5139                        $num        = hexdec($m[1]);
    50915140
    50925141                        switch ($nofValues) {
     
    50955144                                // then continuing with the case 3:
    50965145                            case 3:
    5097                                 for ($i=0; $i<$nbChannels; $i++) {
     5146                                for ($i = 0; $i < $nbChannels; $i++) {
    50985147                                    $t = $num & 0xf;
    50995148                                    array_unshift($color, $t << 4 | $t);
     
    51075156                                // then continuing with the case 6:
    51085157                            case 6:
    5109                                 for ($i=0; $i<$nbChannels; $i++) {
     5158                                for ($i = 0; $i < $nbChannels; $i++) {
    51105159                                    array_unshift($color, $num & 0xff);
    51115160                                    $num >>= 8;
     
    51245173
    51255174                        array_unshift($color, Type::T_COLOR);
     5175
    51265176                        return $color;
    51275177                    }
     
    51415191
    51425192    /**
    5143      * @param int|Node\Number $value
    5144      * @param bool $isAlpha
    5145      * @return int|mixed
     5193     * @param integer|\ScssPhp\ScssPhp\Node\Number $value
     5194     * @param boolean                              $isAlpha
     5195     *
     5196     * @return integer|mixed
    51465197     */
    51475198    protected function compileRGBAValue($value, $isAlpha = false)
     
    51505201            return $this->compileColorPartValue($value, 0, 1, false);
    51515202        }
     5203
    51525204        return $this->compileColorPartValue($value, 0, 255, true);
    51535205    }
    51545206
    51555207    /**
    5156      * @param mixed $value
    5157      * @param int|float $min
    5158      * @param int|float $max
    5159      * @param bool $isInt
    5160      * @param bool $clamp
    5161      * @param bool $modulo
    5162      * @return int|mixed
     5208     * @param mixed         $value
     5209     * @param integer|float $min
     5210     * @param integer|float $max
     5211     * @param boolean       $isInt
     5212     * @param boolean       $clamp
     5213     * @param boolean       $modulo
     5214     *
     5215     * @return integer|mixed
    51635216     */
    51645217    protected function compileColorPartValue($value, $min, $max, $isInt = true, $clamp = true, $modulo = false)
    51655218    {
    5166         if (!is_numeric($value)) {
     5219        if (! is_numeric($value)) {
    51675220            if (is_array($value)) {
    51685221                $reduced = $this->reduce($value);
     5222
    51695223                if (is_object($reduced) && $value->type === Type::T_NUMBER) {
    51705224                    $value = $reduced;
    51715225                }
    51725226            }
     5227
    51735228            if (is_object($value) && $value->type === Type::T_NUMBER) {
    51745229                $num = $value->dimension;
     5230
    51755231                if (count($value->units)) {
    51765232                    $unit = array_keys($value->units);
    51775233                    $unit = reset($unit);
     5234
    51785235                    switch ($unit) {
    51795236                        case '%':
     
    51845241                    }
    51855242                }
     5243
    51865244                $value = $num;
    51875245            } elseif (is_array($value)) {
     
    51945252                $value = round($value);
    51955253            }
     5254
    51965255            if ($clamp) {
    51975256                $value = min($max, max($min, $value));
    51985257            }
     5258
    51995259            if ($modulo) {
    52005260                $value = $value % $max;
     5261
    52015262                // still negative?
    52025263                while ($value < $min) {
     
    52045265                }
    52055266            }
     5267
    52065268            return $value;
    52075269        }
     
    55315593        switch (count($args)) {
    55325594            case 1:
    5533                 if (!$color = $this->coerceColor($args[0], true)) {
     5595                if (! $color = $this->coerceColor($args[0], true)) {
    55345596                    $color = [Type::T_STRING, '', [$funcName . '(', $args[0], ')']];
    55355597                }
    55365598                break;
     5599
    55375600            case 3:
    55385601                $color = [Type::T_COLOR, $args[0], $args[1], $args[2]];
    5539                 if (!$color = $this->coerceColor($color)) {
     5602
     5603                if (! $color = $this->coerceColor($color)) {
    55405604                    $color = [Type::T_STRING, '', [$funcName .'(', $args[0], ', ', $args[1], ', ', $args[2], ')']];
    55415605                }
     5606
    55425607                return $color;
    5543                 break;
     5608
    55445609            case 2:
    55455610                if ($color = $this->coerceColor($args[0], true)) {
    55465611                    $alpha = $this->compileRGBAValue($args[1], true);
     5612
    55475613                    if (is_numeric($alpha)) {
    55485614                        $color[4] = $alpha;
     
    55555621                }
    55565622                break;
     5623
    55575624            case 4:
    55585625            default:
    55595626                $color = [Type::T_COLOR, $args[0], $args[1], $args[2], $args[3]];
    5560                 if (!$color = $this->coerceColor($color)) {
     5627
     5628                if (! $color = $this->coerceColor($color)) {
    55615629                    $color = [Type::T_STRING, '',
    55625630                        [$funcName . '(', $args[0], ', ', $args[1], ', ', $args[2], ', ', $args[3], ')']];
     
    55645632                break;
    55655633        }
     5634
    55665635        return $color;
    55675636    }
     
    55835652        $color = $this->assertColor($args[0]);
    55845653
    5585         foreach ([1=>1, 2=>2, 3=>3, 7=>4] as $iarg => $irgba) {
     5654        foreach ([1 => 1, 2 => 2, 3 => 3, 7 => 4] as $iarg => $irgba) {
    55865655            if (isset($args[$iarg])) {
    55875656                $val = $this->assertNumber($args[$iarg]);
    5588                 if (!isset($color[$irgba])) {
     5657
     5658                if (! isset($color[$irgba])) {
    55895659                    $color[$irgba] = (($irgba < 4) ? 0 : 1);
    55905660                }
     5661
    55915662                $color[$irgba] = call_user_func($fn, $color[$irgba], $val, $iarg);
    55925663            }
     
    55965667            $hsl = $this->toHSL($color[1], $color[2], $color[3]);
    55975668
    5598             foreach ([4=>1, 5=>2, 6=>3] as $iarg => $ihsl) {
     5669            foreach ([4 => 1, 5 => 2, 6 => 3] as $iarg => $ihsl) {
    55995670                if (! empty($args[$iarg])) {
    56005671                    $val = $this->assertNumber($args[$iarg]);
     
    57765847    {
    57775848        if (count($args) == 1) {
    5778             if ($args[0][0] !== Type::T_LIST || count($args[0][2])<3 || count($args[0][2])>4) {
     5849            if ($args[0][0] !== Type::T_LIST || count($args[0][2]) < 3 || count($args[0][2]) > 4) {
    57795850                return [Type::T_STRING, '', [$funcName . '(', $args[0], ')']];
    57805851            }
     5852
    57815853            $args = $args[0][2];
    57825854        }
     
    57875859
    57885860        $alpha = null;
     5861
    57895862        if (count($args) === 4) {
    57905863            $alpha = $this->compileColorPartValue($args[3], 0, 100, false);
    5791             if (!is_numeric($hue) || !is_numeric($saturation) || !is_numeric($lightness) || !is_numeric($alpha)) {
     5864
     5865            if (! is_numeric($hue) || ! is_numeric($saturation) || ! is_numeric($lightness) || ! is_numeric($alpha)) {
    57925866                return [Type::T_STRING, '',
    57935867                    [$funcName . '(', $args[0], ', ', $args[1], ', ', $args[2], ', ', $args[3], ')']];
    57945868            }
    57955869        } else {
    5796             if (!is_numeric($hue) || !is_numeric($saturation) || !is_numeric($lightness)) {
     5870            if (! is_numeric($hue) || ! is_numeric($saturation) || ! is_numeric($lightness)) {
    57975871                return [Type::T_STRING, '', [$funcName . '(', $args[0], ', ', $args[1], ', ', $args[2], ')']];
    57985872            }
    57995873        }
     5874
    58005875        $color = $this->toRGB($hue, $saturation, $lightness);
    5801         if (!is_null($alpha)) {
     5876
     5877        if (! is_null($alpha)) {
    58025878            $color[4] = $alpha;
    58035879        }
     
    60466122
    60476123        foreach ($numbers as $key => $number) {
    6048             if (null === $min || $number[1] <= $min[1]) {
     6124            if (is_null($min) || $number[1] <= $min[1]) {
    60496125                $min = [$key, $number[1]];
    60506126            }
     
    60606136
    60616137        foreach ($numbers as $key => $number) {
    6062             if (null === $max || $number[1] >= $max[1]) {
     6138            if (is_null($max) || $number[1] >= $max[1]) {
    60636139                $max = [$key, $number[1]];
    60646140            }
     
    60896165            $number = $item->normalize();
    60906166
    6091             if (null === $unit) {
     6167            if (is_null($unit)) {
    60926168                $unit = $number[2];
    60936169                $originalUnit = $item->unitStr();
     
    61776253        if (! is_null($key)) {
    61786254            $key = $this->compileStringContent($this->coerceString($key));
     6255
    61796256            for ($i = count($map[1]) - 1; $i >= 0; $i--) {
    61806257                if ($key === $this->compileStringContent($this->coerceString($map[1][$i]))) {
     
    63186395    protected function libZip($args)
    63196396    {
    6320         foreach ($args as $arg) {
    6321             $this->assertList($arg);
     6397        foreach ($args as $key => $arg) {
     6398            $args[$key] = $this->coerceList($arg);
    63226399        }
    63236400
     
    64506527    }
    64516528
    6452     protected static $libStrSlice = ['string', 'start-at', 'end-at:null'];
     6529    protected static $libStrSlice = ['string', 'start-at', 'end-at:-1'];
    64536530    protected function libStrSlice($args)
    64546531    {
    6455         if (isset($args[2]) && $args[2][1] == 0) {
     6532        if (isset($args[2]) && ! $args[2][1]) {
    64566533            return static::$nullString;
    64576534        }
     
    64666543        }
    64676544
    6468         $end    = (int) $args[2][1];
     6545        $end    = isset($args[2]) ? (int) $args[2][1] : -1;
    64696546        $length = $end < 0 ? $end + 1 : ($end > 0 ? $end - $start : $end);
    64706547
     
    66086685    {
    66096686        $value = $args[0];
     6687
    66106688        if ($value === static::$null) {
    66116689            $value = [Type::T_KEYWORD, 'null'];
     
    71957273        $tags = array_filter($tags);
    71967274
    7197         if (count($tags)>1) {
     7275        if (count($tags) > 1) {
    71987276            $tags = array_diff($tags, ['*']);
    71997277        }
    72007278
    72017279        // not compatible nodes
    7202         if (count($tags)>1) {
     7280        if (count($tags) > 1) {
    72037281            return false;
    72047282        }
  • _plugins_/scssphp/trunk/lib/scssphp/src/Formatter/Expanded.php

    r115547 r118014  
    5656        foreach ($block->lines as $index => $line) {
    5757            if (substr($line, 0, 2) === '/*') {
    58                 $block->lines[$index] = preg_replace('/(\r|\n)+/', $glue, $line);
     58                $block->lines[$index] = preg_replace('/[\r\n]+/', $glue, $line);
    5959            }
    6060        }
  • _plugins_/scssphp/trunk/lib/scssphp/src/Formatter/Nested.php

    r117605 r118014  
    6464        foreach ($block->lines as $index => $line) {
    6565            if (substr($line, 0, 2) === '/*') {
    66                 $block->lines[$index] = preg_replace('/(\r|\n)+/', $glue, $line);
     66                $block->lines[$index] = preg_replace('/[\r\n]+/', $glue, $line);
    6767            }
    6868        }
     
    9999            $this->depth--;
    100100
    101             if (!$this->depth && ($block->depth <= 1 || (!$this->indentLevel && $block->type === Type::T_COMMENT)) &&
     101            if (! $this->depth && ($block->depth <= 1 || (! $this->indentLevel && $block->type === Type::T_COMMENT)) &&
    102102                (($block->selectors && ! $isMediaOrDirective) || $previousHasSelector)
    103103            ) {
     
    165165
    166166        if (! empty($block->children)) {
    167             if ($this->depth>0 && ($isMediaOrDirective || ! $this->hasFlatChild($block))) {
     167            if ($this->depth > 0 && ($isMediaOrDirective || ! $this->hasFlatChild($block))) {
    168168                array_pop($depths);
    169169
  • _plugins_/scssphp/trunk/lib/scssphp/src/Node/Number.php

    r116185 r118014  
    142142    {
    143143        if ($offset === -3) {
    144             return $this->sourceColumn !== null;
     144            return ! is_null($this->sourceColumn);
    145145        }
    146146
    147147        if ($offset === -2) {
    148             return $this->sourceLine !== null;
     148            return ! is_null($this->sourceLine);
    149149        }
    150150
  • _plugins_/scssphp/trunk/lib/scssphp/src/Parser.php

    r117605 r118014  
    219219     * @api
    220220     *
    221      * @param string $buffer
    222      * @param string $out
     221     * @param string       $buffer
     222     * @param string|array $out
    223223     *
    224224     * @return boolean
     
    246246     * @api
    247247     *
    248      * @param string $buffer
    249      * @param string $out
     248     * @param string       $buffer
     249     * @param string|array $out
    250250     *
    251251     * @return boolean
     
    273273     * @api
    274274     *
    275      * @param string $buffer
    276      * @param string $out
    277      *
    278      * @return array
     275     * @param string       $buffer
     276     * @param string|array $out
     277     *
     278     * @return boolean
    279279     */
    280280    public function parseMediaQueryList($buffer, &$out)
     
    287287
    288288        $this->saveEncoding();
    289 
    290289
    291290        $isMediaQuery = $this->mediaQueryList($out);
     
    730729            if ($this->eatWhiteDefault) {
    731730                $this->whitespace();
    732                 $this->append(null); // collect comments at the begining if needed
     731                $this->append(null); // collect comments at the beginning if needed
    733732            }
    734733
     
    844843        $this->env = $b;
    845844
    846         // collect comments at the begining of a block if needed
     845        // collect comments at the beginning of a block if needed
    847846        if ($this->eatWhiteDefault) {
    848847            $this->whitespace();
     
    10761075                // comment that are kept in the output CSS
    10771076                $comment = [];
     1077                $startCommentCount = $this->count;
    10781078                $endCommentCount = $this->count + strlen($m[1]);
    10791079
     
    10971097                        }
    10981098
    1099                         $comment[] = $out;
     1099                        $comment[] = [Type::T_COMMENT, substr($this->buffer, $p, $this->count - $p), $out];
    11001100                    } else {
    11011101                        $comment[] = substr($this->buffer, $this->count, 2);
     
    11151115                } else {
    11161116                    $comment[] = $c;
    1117                     $this->appendComment([Type::T_COMMENT, [Type::T_STRING, '', $comment]]);
    1118                 }
    1119 
    1120                 $this->commentsSeen[$this->count] = true;
     1117                    $staticComment = substr($this->buffer, $startCommentCount, $endCommentCount - $startCommentCount);
     1118                    $this->appendComment([Type::T_COMMENT, $staticComment, [Type::T_STRING, '', $comment]]);
     1119                }
     1120
     1121                $this->commentsSeen[$startCommentCount] = true;
    11211122                $this->count = $endCommentCount;
    11221123            } else {
     
    11391140    {
    11401141        if (! $this->discardComments) {
    1141             if ($comment[0] === Type::T_COMMENT && is_string($comment[1])) {
    1142                 $comment[1] = substr(preg_replace(['/^\s+/m', '/^(.)/m'], ['', ' \1'], $comment[1]), 1);
     1142            if ($comment[0] === Type::T_COMMENT) {
     1143                if (is_string($comment[1])) {
     1144                    $comment[1] = substr(preg_replace(['/^\s+/m', '/^(.)/m'], ['', ' \1'], $comment[1]), 1);
     1145                }
     1146                if (isset($comment[2]) and is_array($comment[2]) and $comment[2][0] === Type::T_STRING) {
     1147                    foreach ($comment[2][2] as $k => $v) {
     1148                        if (is_string($v)) {
     1149                            $p = strpos($v, "\n");
     1150                            if ($p !== false) {
     1151                                $comment[2][2][$k] = substr($v, 0, $p + 1)
     1152                                    . preg_replace(['/^\s+/m', '/^(.)/m'], ['', ' \1'], substr($v, $p+1));
     1153                            }
     1154                        }
     1155                    }
     1156                }
    11431157            }
    11441158
     
    11561170    {
    11571171        if (! is_null($statement)) {
    1158             if ($pos !== null) {
     1172            if (! is_null($pos)) {
    11591173                list($line, $column) = $this->getSourcePosition($pos);
    11601174
     
    23262340     * Parser interpolation
    23272341     *
    2328      * @param array  $out
    2329      * @param boolean $lookWhite save information about whitespace before and after
     2342     * @param string|array $out
     2343     * @param boolean      $lookWhite save information about whitespace before and after
    23302344     *
    23312345     * @return boolean
     
    24322446     * Parse comma separated selector list
    24332447     *
    2434      * @param array $out
     2448     * @param array   $out
     2449     * @param boolean $subSelector
    24352450     *
    24362451     * @return boolean
     
    24672482     * Parse whitespace separated selector list
    24682483     *
    2469      * @param array $out
     2484     * @param array   $out
     2485     * @param boolean $subSelector
    24702486     *
    24712487     * @return boolean
     
    25192535     * }}
    25202536     *
    2521      * @param array $out
     2537     * @param array   $out
     2538     * @param boolean $subSelector
    25222539     *
    25232540     * @return boolean
     
    27962813     * Parse a placeholder
    27972814     *
    2798      * @param string $placeholder
     2815     * @param string|array $placeholder
    27992816     *
    28002817     * @return boolean
     
    29392956        }
    29402957
     2958        $m = null;
     2959
    29412960        if (! $this->match('(' . $validChars . '*?)' . $this->pregQuote($what), $m, ! $until)) {
    29422961            return false;
     
    30383057        }
    30393058
    3040         $iniDirective = 'mbstring' . '.func_overload'; // deprecated in PHP 7.2
    3041 
    3042         if (ini_get($iniDirective) & 2) {
     3059        // deprecated in PHP 7.2
     3060        $iniDirective = 'mbstring.func_overload';
     3061
     3062        if (extension_loaded('mbstring') && ini_get($iniDirective) & 2) {
    30433063            $this->encoding = mb_internal_encoding();
    30443064
     
    30523072    private function restoreEncoding()
    30533073    {
    3054         if ($this->encoding) {
     3074        if (extension_loaded('mbstring') && $this->encoding) {
    30553075            mb_internal_encoding($this->encoding);
    30563076        }
  • _plugins_/scssphp/trunk/lib/scssphp/src/Version.php

    r117605 r118014  
    1919class Version
    2020{
    21     const VERSION = 'v1.0.3';
     21    const VERSION = 'v1.0.4';
    2222}
  • _plugins_/scssphp/trunk/paquet.xml

    r117660 r118014  
    22        prefix="scssphp"
    33        categorie="outil"
    4         version="2.1.3"
     4        version="2.1.4"
    55        etat="stable"
    6         compatibilite="[3.1.0;3.2.*]"
     6        compatibilite="[3.1.0;3.3.*]"
    77        logo="scssphp-32.png"
    88        documentation="https://contrib.spip.net/ScssPhp"
     
    2222        <pipeline nom="formulaire_admin" />
    2323
    24         <procure nom="scssphp" version="1.0.3" />
     24        <procure nom="scssphp" version="1.0.4" />
    2525
    2626        <necessite nom="php" compatibilite="[5.6.0;[" />
  • _plugins_/scssphp/trunk/scssphp_fonctions.php

    r117660 r118014  
    3838
    3939        $cache_options = array(
    40                 'cache_dir' => scss_cache_dir(),
     40                'cacheDir' => scss_cache_dir(),
    4141                // il faut prefixer avec une empreinte du import_dirs qui change le resultat
    4242                'prefix' => 'scssphp_'. substr(md5(json_encode($import_dirs)),0,4) . '_',
    43                 'force_refresh' => false,
     43                'forceRefresh' => false,
    4444        );
    4545
    4646        if (defined('_VAR_MODE') and
    4747                (_request('var_mode') == 'css' or in_array(_VAR_MODE, array('css', 'recalcul'))) ) {
    48                 $cache_options['force_refresh'] = 'once';
     48                $cache_options['forceRefresh'] = 'once';
    4949        }
    5050
     
    124124        $files = $scss->getParsedFiles();
    125125        if (!$files and !empty($contexte['file'])) {
    126                 $files = [$contexte['file']];
     126                $files = [$contexte['file'] => true];
    127127        }
    128128
Note: See TracChangeset for help on using the changeset viewer.