Changeset 108142 in spip-zone


Ignore:
Timestamp:
Dec 21, 2017, 4:41:03 PM (15 months ago)
Author:
arnaud.berard@…
Message:

V1.4.2 - Mise a jour de la lib scssphp en 0.7.4

https://github.com/leafo/scssphp/releases

Location:
_plugins_/scssphp/trunk
Files:
5 added
18 edited

Legend:

Unmodified
Added
Removed
  • _plugins_/scssphp/trunk/paquet.xml

    r107421 r108142  
    22        prefix="scssphp"
    33        categorie="outil"
    4         version="1.4.1"
     4        version="1.4.2"
    55        etat="test"
    66        compatibilite="[2.1.0;3.2.*]"
  • _plugins_/scssphp/trunk/plugin.xml

    r107421 r108142  
    66        <auteur>Jean-Baptiste Bourgoin</auteur>
    77        <licence>GPL 3</licence>
    8         <version>1.4.1</version>
     8        <version>1.4.2</version>
    99        <etat>test</etat>
    1010        <icon>scsscss.png</icon>
  • _plugins_/scssphp/trunk/scssphp/bin/pscss

    r103283 r108142  
    3333$ignoreErrors = false;
    3434$encoding = false;
     35$sourceMap = false;
    3536
    3637/**
     
    7778    --iso8859-1         Use iso8859-1 encoding instead of utf-8 (default utf-8)
    7879    --line-numbers      Annotate selectors with comments referring to the source file and line number
    79     -p=precision        Set decimal number precision (default 5)
     80    -p=precision        Set decimal number precision (default 10)
     81    --sourcemap         Create source map file
    8082    -T                  Dump formatted parse tree
    8183    -v, --version       Print the version
     
    106108    if ($argv[$i] === '--line-numbers' || $argv[$i] === '--line-comments') {
    107109        $lineNumbers = true;
     110        continue;
     111    }
     112
     113    if ($argv[$i] === '--sourcemap') {
     114        $sourceMap = true;
    108115        continue;
    109116    }
     
    194201}
    195202
     203if ($sourceMap) {
     204    $scss->setSourceMap(Compiler::SOURCE_MAP_FILE);
     205}
     206
    196207if ($encoding) {
    197208    $scss->setEncoding($encoding);
  • _plugins_/scssphp/trunk/scssphp/composer.json

    r98027 r108142  
    2626    "require-dev": {
    2727        "squizlabs/php_codesniffer": "~2.5",
    28         "phpunit/phpunit": "~3.7",
    29         "kherge/box": "~2.5"
     28        "phpunit/phpunit": "~4.6"
    3029    },
    3130    "bin": ["bin/pscss"],
     
    3635            "/.gitignore",
    3736            "/.travis.yml",
    38             "/box.json.dist",
    3937            "/phpunit.xml.dist",
    4038            "/tests"
  • _plugins_/scssphp/trunk/scssphp/scss.inc.php

    r98027 r108142  
    44}
    55
    6 if (! class_exists('scssc', false)) {
     6if (! class_exists('Leafo\ScssPhp\Version', false)) {
    77    include_once __DIR__ . '/src/Base/Range.php';
    88    include_once __DIR__ . '/src/Block.php';
     
    1212    include_once __DIR__ . '/src/Exception/CompilerException.php';
    1313    include_once __DIR__ . '/src/Exception/ParserException.php';
     14    include_once __DIR__ . '/src/Exception/RangeException.php';
    1415    include_once __DIR__ . '/src/Exception/ServerException.php';
    1516    include_once __DIR__ . '/src/Formatter.php';
     
    2425    include_once __DIR__ . '/src/Node/Number.php';
    2526    include_once __DIR__ . '/src/Parser.php';
     27    include_once __DIR__ . '/src/SourceMap/Base64VLQEncoder.php';
     28    include_once __DIR__ . '/src/SourceMap/SourceMapGenerator.php';
    2629    include_once __DIR__ . '/src/Type.php';
    2730    include_once __DIR__ . '/src/Util.php';
    2831    include_once __DIR__ . '/src/Version.php';
    29     include_once __DIR__ . '/src/Server.php';
    3032}
  • _plugins_/scssphp/trunk/scssphp/src/Block.php

    r103283 r108142  
    3030
    3131    /**
     32     * @var string
     33     */
     34    public $sourceName;
     35
     36    /**
    3237     * @var integer
    3338     */
  • _plugins_/scssphp/trunk/scssphp/src/Compiler.php

    r103283 r108142  
    1919use Leafo\ScssPhp\Formatter\OutputBlock;
    2020use Leafo\ScssPhp\Node;
     21use Leafo\ScssPhp\SourceMap\SourceMapGenerator;
    2122use Leafo\ScssPhp\Type;
    2223use Leafo\ScssPhp\Parser;
     
    6566    const WITH_ALL      = 7;
    6667
     68    const SOURCE_MAP_NONE   = 0;
     69    const SOURCE_MAP_INLINE = 1;
     70    const SOURCE_MAP_FILE   = 2;
     71
    6772    /**
    6873     * @var array
     
    121126    protected $lineNumberStyle = null;
    122127
     128    protected $sourceMap = self::SOURCE_MAP_NONE;
     129    protected $sourceMapOptions = [];
     130
     131    /**
     132     * @var string|\Leafo\ScssPhp\Formatter
     133     */
    123134    protected $formatter = 'Leafo\ScssPhp\Formatter\Nested';
    124135
     
    126137    protected $rootBlock;
    127138
     139    /**
     140     * @var \Leafo\ScssPhp\Compiler\Environment
     141     */
    128142    protected $env;
    129143    protected $scope;
     
    166180    public function compile($code, $path = null)
    167181    {
    168         $locale = setlocale(LC_NUMERIC, 0);
    169         setlocale(LC_NUMERIC, 'C');
    170 
    171182        $this->indentLevel    = -1;
    172183        $this->commentsSeen   = [];
     
    195206        $this->popEnv();
    196207
    197         $out = $this->formatter->format($this->scope);
    198 
    199         setlocale(LC_NUMERIC, $locale);
     208        $sourceMapGenerator = null;
     209
     210        if ($this->sourceMap && $this->sourceMap !== self::SOURCE_MAP_NONE) {
     211            $sourceMapGenerator = new SourceMapGenerator($this->sourceMapOptions);
     212        }
     213
     214        $out = $this->formatter->format($this->scope, $sourceMapGenerator);
     215
     216        if (! empty($out) && $this->sourceMap && $this->sourceMap !== self::SOURCE_MAP_NONE) {
     217            $sourceMap    = $sourceMapGenerator->generateJson();
     218            $sourceMapUrl = null;
     219
     220            switch ($this->sourceMap) {
     221                case self::SOURCE_MAP_INLINE:
     222                    $sourceMapUrl = sprintf('data:application/json,%s', Util::encodeURIComponent($sourceMap));
     223                    break;
     224
     225                case self::SOURCE_MAP_FILE:
     226                    $sourceMapUrl = $sourceMapGenerator->saveMap($sourceMap);
     227                    break;
     228            }
     229
     230            $out .= sprintf('/*# sourceMappingURL=%s */', $sourceMapUrl);
     231        }
    200232
    201233        return $out;
     
    274306    {
    275307        $out = new OutputBlock;
    276         $out->type      = $type;
    277         $out->lines     = [];
    278         $out->children  = [];
    279         $out->parent    = $this->scope;
    280         $out->selectors = $selectors;
    281         $out->depth     = $this->env->depth;
     308        $out->type         = $type;
     309        $out->lines        = [];
     310        $out->children     = [];
     311        $out->parent       = $this->scope;
     312        $out->selectors    = $selectors;
     313        $out->depth        = $this->env->depth;
     314        $out->sourceName   = $this->env->block->sourceName;
     315        $out->sourceLine   = $this->env->block->sourceLine;
     316        $out->sourceColumn = $this->env->block->sourceColumn;
    282317
    283318        return $out;
     
    662697            if ($needsWrap) {
    663698                $wrapped = new Block;
     699                $wrapped->sourceName   = $media->sourceName;
    664700                $wrapped->sourceIndex  = $media->sourceIndex;
    665701                $wrapped->sourceLine   = $media->sourceLine;
     
    735771        if ($block->selector) {
    736772            $wrapped = new Block;
     773            $wrapped->sourceName   = $block->sourceName;
    737774            $wrapped->sourceIndex  = $block->sourceIndex;
    738775            $wrapped->sourceLine   = $block->sourceLine;
     
    791828
    792829            $b = new Block;
     830            $b->sourceName   = $e->block->sourceName;
    793831            $b->sourceIndex  = $e->block->sourceIndex;
    794832            $b->sourceLine   = $e->block->sourceLine;
     
    11821220     * Compile selector to string; self(&) should have been replaced by now
    11831221     *
    1184      * @param array $selector
     1222     * @param string|array $selector
    11851223     *
    11861224     * @return string
     
    12041242     * Compile selector part
    12051243     *
    1206      * @param arary $piece
     1244     * @param array $piece
    12071245     *
    12081246     * @return string
     
    19271965     * @param string $value
    19281966     *
    1929      * @return bool
     1967     * @return boolean
    19301968     */
    19311969    protected function isImmediateRelationshipCombinator($value)
     
    19642002     * @param boolean $inExp
    19652003     *
    1966      * @return array
     2004     * @return array|\Leafo\ScssPhp\Node\Number
    19672005     */
    19682006    protected function reduce($value, $inExp = false)
     
    22392277     * @param array $right
    22402278     *
    2241      * @return array
     2279     * @return \Leafo\ScssPhp\Node\Number
    22422280     */
    22432281    protected function opAddNumberNumber($left, $right)
     
    22522290     * @param array $right
    22532291     *
    2254      * @return array
     2292     * @return \Leafo\ScssPhp\Node\Number
    22552293     */
    22562294    protected function opMulNumberNumber($left, $right)
     
    22652303     * @param array $right
    22662304     *
    2267      * @return array
     2305     * @return \Leafo\ScssPhp\Node\Number
    22682306     */
    22692307    protected function opSubNumberNumber($left, $right)
     
    22782316     * @param array $right
    22792317     *
    2280      * @return array
     2318     * @return array|\Leafo\ScssPhp\Node\Number
    22812319     */
    22822320    protected function opDivNumberNumber($left, $right)
     
    22952333     * @param array $right
    22962334     *
    2297      * @return array
     2335     * @return \Leafo\ScssPhp\Node\Number
    22982336     */
    22992337    protected function opModNumberNumber($left, $right)
     
    25812619     * @param array $right
    25822620     *
    2583      * @return array
     2621     * @return \Leafo\ScssPhp\Node\Number
    25842622     */
    25852623    protected function opCmpNumberNumber($left, $right)
     
    33063344
    33073345    /**
     3346     * Enable/disable source maps
     3347     *
     3348     * @api
     3349     *
     3350     * @param integer $sourceMap
     3351     */
     3352    public function setSourceMap($sourceMap)
     3353    {
     3354        $this->sourceMap = $sourceMap;
     3355    }
     3356
     3357    /**
     3358     * Set source map options
     3359     *
     3360     * @api
     3361     *
     3362     * @param array $sourceMapOptions
     3363     */
     3364    public function setSourceMapOptions($sourceMapOptions)
     3365    {
     3366        $this->sourceMapOptions = $sourceMapOptions;
     3367    }
     3368
     3369    /**
    33083370     * Register function
    33093371     *
     
    35063568     *
    35073569     * @param string $name
    3508      * @param array  $args
     3570     * @param array  $argValues
    35093571     * @param array  $returnValue
    35103572     *
     
    37783840     * @param mixed $value
    37793841     *
    3780      * @return array
     3842     * @return array|\Leafo\ScssPhp\Node\Number
    37813843     */
    37823844    private function coerceValue($value)
     
    38513913     * Coerce something to list
    38523914     *
    3853      * @param array $item
     3915     * @param array  $item
     3916     * @param string $delim
    38543917     *
    38553918     * @return array
     
    51305193        $stringContent = $this->compileStringContent($string);
    51315194
    5132         $string[2] = [mb_strtolower($stringContent)];
     5195        $string[2] = [function_exists('mb_strtolower') ? mb_strtolower($stringContent) : strtolower($stringContent)];
    51335196
    51345197        return $string;
     
    51415204        $stringContent = $this->compileStringContent($string);
    51425205
    5143         $string[2] = [mb_strtoupper($stringContent)];
     5206        $string[2] = [function_exists('mb_strtoupper') ? mb_strtoupper($stringContent) : strtoupper($stringContent)];
    51445207
    51455208        return $string;
     
    52115274     *
    52125275     * @param array $args
     5276     *
     5277     * @return array
    52135278     */
    52145279    protected function libCounter($args)
  • _plugins_/scssphp/trunk/scssphp/src/Formatter.php

    r103283 r108142  
    1313
    1414use Leafo\ScssPhp\Formatter\OutputBlock;
     15use Leafo\ScssPhp\SourceMap\SourceMapGenerator;
    1516
    1617/**
     
    5758
    5859    /**
    59      * @var boolea
     60     * @var boolean
    6061     */
    6162    public $keepSemicolons;
     63
     64    /**
     65     * @var \Leafo\ScssPhp\Formatter\OutputBlock
     66     */
     67    protected $currentBlock;
     68
     69    /**
     70     * @var integer
     71     */
     72    protected $currentLine;
     73
     74    /**
     75     * @var integer
     76     */
     77    protected $currentColumn;
     78
     79    /**
     80     * @var \Leafo\ScssPhp\SourceMap\SourceMapGenerator
     81     */
     82    protected $sourceMapGenerator;
    6283
    6384    /**
     
    124145        $glue = $this->break . $inner;
    125146
    126         echo $inner . implode($glue, $block->lines);
     147        $this->write($inner . implode($glue, $block->lines));
    127148
    128149        if (! empty($block->children)) {
    129             echo $this->break;
     150            $this->write($this->break);
    130151        }
    131152    }
     
    140161        $inner = $this->indentStr();
    141162
    142         echo $inner
     163        $this->write($inner
    143164            . implode($this->tagSeparator, $block->selectors)
    144             . $this->open . $this->break;
     165            . $this->open . $this->break);
    145166    }
    146167
     
    168189        }
    169190
     191        $this->currentBlock = $block;
     192
    170193        $pre = $this->indentStr();
    171194
     
    188211
    189212            if (empty($block->children)) {
    190                 echo $this->break;
     213                $this->write($this->break);
    191214            }
    192215
    193             echo $pre . $this->close . $this->break;
     216            $this->write($pre . $this->close . $this->break);
    194217        }
    195218    }
     
    200223     * @api
    201224     *
    202      * @param \Leafo\ScssPhp\Formatter\OutputBlock $block An abstract syntax tree
     225     * @param \Leafo\ScssPhp\Formatter\OutputBlock             $block              An abstract syntax tree
     226     * @param \Leafo\ScssPhp\SourceMap\SourceMapGenerator|null $sourceMapGenerator Optional source map generator
    203227     *
    204228     * @return string
    205229     */
    206     public function format(OutputBlock $block)
    207     {
     230    public function format(OutputBlock $block, SourceMapGenerator $sourceMapGenerator = null)
     231    {
     232        $this->sourceMapGenerator = null;
     233
     234        if ($sourceMapGenerator) {
     235            $this->currentLine = 1;
     236            $this->currentColumn = 0;
     237            $this->sourceMapGenerator = $sourceMapGenerator;
     238        }
     239
    208240        ob_start();
    209241
     
    214246        return $out;
    215247    }
     248
     249    /**
     250     * @param string $str
     251     */
     252    protected function write($str)
     253    {
     254        if ($this->sourceMapGenerator) {
     255            $this->sourceMapGenerator->addMapping(
     256                $this->currentLine,
     257                $this->currentColumn,
     258                $this->currentBlock->sourceLine,
     259                $this->currentBlock->sourceColumn - 1, //columns from parser are off by one
     260                $this->currentBlock->sourceName
     261            );
     262
     263            $lines = explode("\n", $str);
     264            $lineCount = count($lines);
     265            $this->currentLine += $lineCount-1;
     266
     267            $lastLine = array_pop($lines);
     268
     269            $this->currentColumn = ($lineCount === 1 ? $this->currentColumn : 0) + strlen($lastLine);
     270        }
     271
     272        echo $str;
     273    }
    216274}
  • _plugins_/scssphp/trunk/scssphp/src/Formatter/Compressed.php

    r103283 r108142  
    5454        }
    5555
    56         echo $inner . implode($glue, $block->lines);
     56        $this->write($inner . implode($glue, $block->lines));
    5757
    5858        if (! empty($block->children)) {
    59             echo $this->break;
     59            $this->write($this->break);
    6060        }
    6161    }
  • _plugins_/scssphp/trunk/scssphp/src/Formatter/Crunched.php

    r103283 r108142  
    5252        }
    5353
    54         echo $inner . implode($glue, $block->lines);
     54        $this->write($inner . implode($glue, $block->lines));
    5555
    5656        if (! empty($block->children)) {
    57             echo $this->break;
     57            $this->write($this->break);
    5858        }
    5959    }
  • _plugins_/scssphp/trunk/scssphp/src/Formatter/Debug.php

    r103283 r108142  
    5353
    5454        if (empty($block->lines)) {
    55             echo "{$indent}block->lines: []\n";
     55            $this->write("{$indent}block->lines: []\n");
    5656
    5757            return;
     
    5959
    6060        foreach ($block->lines as $index => $line) {
    61             echo "{$indent}block->lines[{$index}]: $line\n";
     61            $this->write("{$indent}block->lines[{$index}]: $line\n");
    6262        }
    6363    }
     
    7171
    7272        if (empty($block->selectors)) {
    73             echo "{$indent}block->selectors: []\n";
     73            $this->write("{$indent}block->selectors: []\n");
    7474
    7575            return;
     
    7777
    7878        foreach ($block->selectors as $index => $selector) {
    79             echo "{$indent}block->selectors[{$index}]: $selector\n";
     79            $this->write("{$indent}block->selectors[{$index}]: $selector\n");
    8080        }
    8181    }
     
    8989
    9090        if (empty($block->children)) {
    91             echo "{$indent}block->children: []\n";
     91            $this->write("{$indent}block->children: []\n");
    9292
    9393            return;
     
    110110        $indent = $this->indentStr();
    111111
    112         echo "{$indent}block->type: {$block->type}\n" .
    113              "{$indent}block->depth: {$block->depth}\n";
     112        $this->write("{$indent}block->type: {$block->type}\n" .
     113             "{$indent}block->depth: {$block->depth}\n");
     114
     115        $this->currentBlock = $block;
    114116
    115117        $this->blockSelectors($block);
  • _plugins_/scssphp/trunk/scssphp/src/Formatter/Expanded.php

    r103283 r108142  
    6060        }
    6161
    62         echo $inner . implode($glue, $block->lines);
     62        $this->write($inner . implode($glue, $block->lines));
    6363
    6464        if (empty($block->selectors) || ! empty($block->children)) {
    65             echo $this->break;
     65            $this->write($this->break);
    6666        }
    6767    }
  • _plugins_/scssphp/trunk/scssphp/src/Formatter/Nested.php

    r103283 r108142  
    6767        }
    6868
    69         echo $inner . implode($glue, $block->lines);
     69        $this->write($inner . implode($glue, $block->lines));
    7070
    7171        if (! empty($block->children)) {
    72             echo $this->break;
     72            $this->write($this->break);
    7373        }
    7474    }
     
    8181        $inner = $this->indentStr();
    8282
    83         echo $inner
     83        $this->write($inner
    8484            . implode($this->tagSeparator, $block->selectors)
    85             . $this->open . $this->break;
     85            . $this->open . $this->break);
    8686    }
    8787
     
    9595
    9696            if ($i < count($block->children) - 1) {
    97                 echo $this->break;
     97                $this->write($this->break);
    9898
    9999                if (isset($block->children[$i + 1])) {
     
    101101
    102102                    if ($next->depth === max($block->depth, 1) && $child->depth >= $next->depth) {
    103                         echo $this->break;
     103                        $this->write($this->break);
    104104                    }
    105105                }
     
    121121        }
    122122
     123        $this->currentBlock = $block;
     124
     125
    123126        $this->depth = $block->depth;
    124127
     
    140143            $this->indentLevel--;
    141144
    142             echo $this->close;
     145            $this->write($this->close);
    143146        }
    144147
    145148        if ($block->type === 'root') {
    146             echo $this->break;
     149            $this->write($this->break);
    147150        }
    148151    }
  • _plugins_/scssphp/trunk/scssphp/src/Formatter/OutputBlock.php

    r103283 r108142  
    4848     */
    4949    public $parent;
     50
     51    /**
     52     * @var string
     53     */
     54    public $sourceName;
     55
     56    /**
     57     * @var integer
     58     */
     59    public $sourceLine;
     60
     61    /**
     62     * @var integer
     63     */
     64    public $sourceColumn;
    5065}
  • _plugins_/scssphp/trunk/scssphp/src/Node/Number.php

    r103283 r108142  
    3232     * @var integer
    3333     */
    34     static public $precision = 5;
     34    static public $precision = 10;
    3535
    3636    /**
     
    291291
    292292        reset($units);
    293         list($unit, ) = each($units);
    294 
    295         return (string) $dimension . $unit;
     293        $unit = key($units);
     294        $dimension = number_format($dimension, static::$precision, '.', '');
     295
     296        return (static::$precision ? rtrim(rtrim($dimension, '0'), '.') : $dimension) . $unit;
    296297    }
    297298
  • _plugins_/scssphp/trunk/scssphp/src/Parser.php

    r103283 r108142  
    709709
    710710        $b = new Block;
     711        $b->sourceName   = $this->sourceName;
    711712        $b->sourceLine   = $line;
    712713        $b->sourceColumn = $column;
     
    24692470    private function saveEncoding()
    24702471    {
    2471         if (ini_get('mbstring.func_overload') & 2) {
     2472        if (version_compare(PHP_VERSION, '7.2.0') >= 0) {
     2473            return;
     2474        }
     2475
     2476        $iniDirective = 'mbstring' . '.func_overload'; // deprecated in PHP 7.2
     2477
     2478        if (ini_get($iniDirective) & 2) {
    24722479            $this->encoding = mb_internal_encoding();
    24732480
  • _plugins_/scssphp/trunk/scssphp/src/Util.php

    r103283 r108142  
    1616
    1717/**
    18  * Utilties
     18 * Utilty functions
    1919 *
    2020 * @author Anthon Pang <anthon.pang@gmail.com>
     
    2626     * room for slight floating-point errors.
    2727     *
    28      * @param string $name  The name of the value. Used in the error message.
    29      * @param Range $range Range of values.
    30      * @param array  $value The value to check.
    31      * @param string $unit  The unit of the value. Used in error reporting.
     28     * @param string                    $name  The name of the value. Used in the error message.
     29     * @param \Leafo\ScssPhp\Base\Range $range Range of values.
     30     * @param array                     $value The value to check.
     31     * @param string                    $unit  The unit of the value. Used in error reporting.
    3232     *
    3333     * @return mixed `value` adjusted to fall within range, if it was outside by a floating-point margin.
     
    5454        throw new RangeException("$name {$val} must be between {$range->first} and {$range->last}$unit");
    5555    }
     56
     57    /**
     58     * Encode URI component
     59     *
     60     * @param string $string
     61     *
     62     * @return string
     63     */
     64    public static function encodeURIComponent($string)
     65    {
     66        $revert = array('%21' => '!', '%2A' => '*', '%27' => "'", '%28' => '(', '%29' => ')');
     67
     68        return strtr(rawurlencode($string), $revert);
     69    }
    5670}
  • _plugins_/scssphp/trunk/scssphp/src/Version.php

    r103283 r108142  
    1919class Version
    2020{
    21     const VERSION = 'v0.6.7';
     21    const VERSION = 'v0.7.4';
    2222}
Note: See TracChangeset for help on using the changeset viewer.