Changeset 124746 in spip-zone


Ignore:
Timestamp:
May 18, 2020, 3:00:58 PM (2 weeks ago)
Author:
Cerdic
Message:

mise a jour de la lib ScssPHP

Location:
_plugins_/scssphp/tags/v2.4.1
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/scssphp/tags/v2.4.1

    • Property subgit:lock:95abd02025a85a5f64ecd7ed06be6923faad3cc8 deleted
    • Property subgit:lock:aed1a58a26cdbc78fddaacb71ad7ed37438ede57 set to 2020-05-18T17:03:21.107
  • _plugins_/scssphp/tags/v2.4.1/lib/scssphp/src/Compiler.php

    r124745 r124746  
    15631563            if ($pushEnv) {
    15641564                $this->pushEnv();
    1565                 $storeEnv = $this->storeEnv;
    1566                 $this->storeEnv = $this->env;
    15671565            }
    15681566
     
    15741572
    15751573            if ($pushEnv) {
    1576                 $this->storeEnv = $storeEnv;
    15771574                $this->popEnv();
    15781575            }
     
    26442641                list(, $each) = $child;
    26452642
    2646                 $list = $this->coerceList($this->reduce($each->list));
     2643                $list = $this->coerceList($this->reduce($each->list), ',', true);
    26472644
    26482645                $this->pushEnv();
    2649                 $storeEnv = $this->storeEnv;
    2650                 $this->storeEnv = $this->env;
    26512646
    26522647                foreach ($list[2] as $item) {
     
    26662661                        if ($ret[0] !== Type::T_CONTROL) {
    26672662                            $store = $this->env->store;
    2668                             $this->storeEnv = $storeEnv;
    26692663                            $this->popEnv();
    2670                             foreach ($store as $key => $value) {
    2671                                 if (!in_array($key, $each->vars)) {
    2672                                     $this->set($key, $value, true);
    2673                                 }
    2674                             }
     2664                            $this->backPropagateEnv($store, $each->vars);
    26752665
    26762666                            return $ret;
     
    26832673                }
    26842674                $store = $this->env->store;
    2685                 $this->storeEnv = $storeEnv;
    26862675                $this->popEnv();
    2687                 foreach ($store as $key => $value) {
    2688                     if (!in_array($key, $each->vars)) {
    2689                         $this->set($key, $value, true);
    2690                     }
    2691                 }
     2676                $this->backPropagateEnv($store, $each->vars);
    26922677
    26932678                break;
     
    27282713
    27292714                $d = $start < $end ? 1 : -1;
     2715
     2716                $this->pushEnv();
    27302717
    27312718                for (;;) {
     
    27432730                    if ($ret) {
    27442731                        if ($ret[0] !== Type::T_CONTROL) {
     2732                            $store = $this->env->store;
     2733                            $this->popEnv();
     2734                            $this->backPropagateEnv($store, [$for->var]);
    27452735                            return $ret;
    27462736                        }
     
    27512741                    }
    27522742                }
     2743
     2744                $store = $this->env->store;
     2745                $this->popEnv();
     2746                $this->backPropagateEnv($store, [$for->var]);
     2747
    27532748                break;
    27542749
     
    27822777                $this->pushEnv();
    27832778                $this->env->depth--;
    2784 
    2785                 $storeEnv = $this->storeEnv;
    2786                 $this->storeEnv = $this->env;
    27872779
    27882780                // Find the parent selectors in the env to be able to know what '&' refers to in the mixin
     
    28392831                $this->compileChildrenNoReturn($mixin->children, $out, $selfParent, $this->env->marker . " " . $name);
    28402832
    2841                 $this->storeEnv = $storeEnv;
    2842 
    28432833                $this->popEnv();
    28442834                break;
     
    28512841
    28522842                if (! $content) {
    2853                     $content = new \stdClass();
    2854                     $content->scope    = new \stdClass();
    2855                     $content->children = $env->parent->block->children;
    28562843                    break;
    28572844                }
     
    28622849                if (isset($argUsing) && isset($argContent)) {
    28632850                    // Get the arguments provided for the content with the names provided in the "using" argument list
    2864                     $this->storeEnv = $this->env;
     2851                    $this->storeEnv = null;
    28652852                    $varsUsing = $this->applyArguments($argUsing, $argContent, false);
    28662853                }
     
    41764163        $env = new Environment;
    41774164        $env->parent = $this->env;
     4165        $env->parentStore = $this->storeEnv;
    41784166        $env->store  = [];
    41794167        $env->block  = $block;
     
    41814169
    41824170        $this->env = $env;
     4171        $this->storeEnv = null;
    41834172
    41844173        return $env;
     
    41904179    protected function popEnv()
    41914180    {
     4181        $this->storeEnv = $this->env->parentStore;
    41924182        $this->env = $this->env->parent;
     4183    }
     4184
     4185    /**
     4186     * propagate vars from a just poped Env (used in @each and @for)
     4187     * @param array $store
     4188     * @param null|array $excludedVars
     4189     */
     4190    protected function backPropagateEnv($store, $excludedVars = null)
     4191    {
     4192        foreach ($store as $key => $value) {
     4193            if (empty($excludedVars) || !in_array($key, $excludedVars)) {
     4194                $this->set($key, $value, true);
     4195            }
     4196        }
    41934197    }
    41944198
     
    42424246        $hasNamespace = $name[0] === '^' || $name[0] === '@' || $name[0] === '%';
    42434247
     4248        $maxDepth = 10000;
     4249
    42444250        for (;;) {
     4251            if ($maxDepth-- <= 0) {
     4252                break;
     4253            }
     4254
    42454255            if (array_key_exists($name, $env->store)) {
    42464256                break;
     
    42624272            }
    42634273
    4264             if (! isset($env->parent)) {
     4274            if (isset($env->parentStore)) {
     4275                $env = $env->parentStore;
     4276            } elseif (isset($env->parent)) {
     4277                $env = $env->parent;
     4278            } else {
    42654279                $env = $storeEnv;
    42664280                break;
    42674281            }
    4268 
    4269             $env = $env->parent;
    42704282        }
    42714283
     
    43464358            }
    43474359
    4348             if (! isset($env->parent)) {
     4360            if (isset($env->parentStore)) {
     4361                $env = $env->parentStore;
     4362            } elseif (isset($env->parent)) {
     4363                $env = $env->parent;
     4364            } else {
    43494365                break;
    43504366            }
    4351 
    4352             $env = $env->parent;
    43534367        }
    43544368
     
    48204834        $this->pushEnv();
    48214835
    4822         $storeEnv = $this->storeEnv;
    4823         $this->storeEnv = $this->env;
    4824 
    48254836        // set the args
    48264837        if (isset($func->args)) {
     
    48414852
    48424853        $ret = $this->compileChildren($func->children, $tmp, $this->env->marker . " " . $name);
    4843 
    4844         $this->storeEnv = $storeEnv;
    48454854
    48464855        $this->popEnv();
     
    53175326     * @param array  $item
    53185327     * @param string $delim
     5328     * @param bool $removeTrailingNull
    53195329     *
    53205330     * @return array
    53215331     */
    5322     protected function coerceList($item, $delim = ',')
     5332    protected function coerceList($item, $delim = ',', $removeTrailingNull = false)
    53235333    {
    53245334        if (isset($item) && $item[0] === Type::T_LIST) {
    53255335            // remove trailing null from the list
    5326             while (end($item[2]) === static::$null) {
     5336            if ($removeTrailingNull && end($item[2]) === static::$null) {
    53275337                array_pop($item[2]);
    53285338            }
     
    65136523    protected function libLength($args)
    65146524    {
    6515         $list = $this->coerceList($args[0]);
     6525        $list = $this->coerceList($args[0], ',', true);
    65166526
    65176527        return count($list[2]);
     
    65416551    protected function libNth($args)
    65426552    {
    6543         $list = $this->coerceList($args[0]);
     6553        $list = $this->coerceList($args[0], ',', false);
    65446554        $n = $this->assertNumber($args[1]);
    65456555
     
    67186728        list($list1, $list2, $sep, $bracketed) = $args;
    67196729
    6720         $list1 = $this->coerceList($list1, ' ');
    6721         $list2 = $this->coerceList($list2, ' ');
     6730        $list1 = $this->coerceList($list1, ' ', true);
     6731        $list2 = $this->coerceList($list2, ' ', true);
    67226732        $sep   = $this->listSeparatorForJoin($list1, $sep);
    67236733
     
    67606770        list($list1, $value, $sep) = $args;
    67616771
    6762         $list1 = $this->coerceList($list1, ' ');
     6772        $list1 = $this->coerceList($list1, ' ', true);
    67636773        $sep = $this->listSeparatorForJoin($list1, $sep);
    67646774
  • _plugins_/scssphp/tags/v2.4.1/lib/scssphp/src/Parser.php

    r124745 r124746  
    766766
    767767        // custom properties : right part is static
    768         if ((($isCustom = $this->literal('--', 2)) || $this->cssOnly) &&
    769             $this->propertyName($name) &&
     768        if (($this->customProperty($name) || ($this->cssOnly && $this->propertyName($name))) &&
    770769            $this->matchChar(':', false)) {
    771770            $start = $this->count;
     
    792791                    }
    793792                    $this->seek($end);
    794                     $name = [Type::T_STRING, '', $isCustom ? ['--', $name] : [$name]];
    795793                    $this->append([Type::T_CUSTOM_PROPERTY, $name, $value], $s);
    796794                    return true;
     
    19851983
    19861984            $this->count--;
     1985
     1986            if ($this->customProperty($out)) {
     1987                return true;
     1988            }
    19871989        }
    19881990
     
    26772679
    26782680    /**
     2681     * Parse custom property name (as an array of parts or a string)
     2682     *
     2683     * @param array $out
     2684     *
     2685     * @return boolean
     2686     */
     2687    protected function customProperty(&$out)
     2688    {
     2689        $s = $this->count;
     2690
     2691        if (! $this->literal('--', 2, false)) {
     2692            return false;
     2693        }
     2694
     2695        $parts = ['--'];
     2696
     2697        $oldWhite = $this->eatWhiteDefault;
     2698        $this->eatWhiteDefault = false;
     2699
     2700        for (;;) {
     2701            if ($this->interpolation($inter)) {
     2702                $parts[] = $inter;
     2703                continue;
     2704            }
     2705
     2706            if ($this->keyword($text)) {
     2707                $parts[] = $text;
     2708                continue;
     2709            }
     2710
     2711            break;
     2712        }
     2713
     2714        $this->eatWhiteDefault = $oldWhite;
     2715
     2716        if (count($parts) == 1) {
     2717            $this->seek($s);
     2718
     2719            return false;
     2720        }
     2721
     2722        $this->whitespace(); // get any extra whitespace
     2723
     2724        $out = [Type::T_STRING, '', $parts];
     2725
     2726        return true;
     2727    }
     2728
     2729    /**
    26792730     * Parse comma separated selector list
    26802731     *
  • _plugins_/scssphp/tags/v2.4.1/paquet.xml

    r124745 r124746  
    22        prefix="scssphp"
    33        categorie="outil"
    4         version="2.2.1"
     4        version="2.2.2"
    55        etat="stable"
    66        compatibilite="[3.1.0;3.3.*]"
Note: See TracChangeset for help on using the changeset viewer.