Changeset 111780 in spip-zone


Ignore:
Timestamp:
Sep 29, 2018, 12:32:39 PM (10 months ago)
Author:
cedric@…
Message:

Report de r111778 : Fix https://core.spip.net/issues/3987 : ne pas supprimer les commentaires de credit/licence commençant par un \! lors de la minification CSS

Location:
_core_/branches/spip-3.2/plugins/compresseur
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • _core_/branches/spip-3.2/plugins/compresseur

  • _core_/branches/spip-3.2/plugins/compresseur/lib/csstidy/README.md

    r111766 r111780  
    33CSSTidy is a CSS minifier
    44
     5* v1.6.4 :
     6  preserve important comments (starting with !) in the minification /*! Credits/Licence */
    57* v1.6.3 :
    68  border-radius shorthands optimisation, reverse_left_and_right option
    7 * v1.5.7 : 
     9* v1.5.7 :
    810  PHP 7 compatibility, composer update, Travis CI integration
    911* v1.5.6 :
  • _core_/branches/spip-3.2/plugins/compresseur/lib/csstidy/class.csstidy.php

    r111766 r111780  
    6262 * @todo //TODO: make them class constants of csstidy
    6363 */
    64 define('AT_START',    1);
    65 define('AT_END',      2);
    66 define('SEL_START',   3);
    67 define('SEL_END',     4);
    68 define('PROPERTY',    5);
    69 define('VALUE',       6);
    70 define('COMMENT',     7);
    71 define('DEFAULT_AT', 41);
     64define('AT_START',         1);
     65define('AT_END',           2);
     66define('SEL_START',        3);
     67define('SEL_END',          4);
     68define('PROPERTY',         5);
     69define('VALUE',            6);
     70define('COMMENT',          7);
     71define('IMPORTANT_COMMENT',8);
     72define('DEFAULT_AT',      41);
    7273
    7374/**
     
    9596 * @package csstidy
    9697 * @author Florian Schmitz (floele at gmail dot com) 2005-2006
    97  * @version 1.6.3
     98 * @version 1.6.4
    9899 */
    99100class csstidy {
     
    148149         * @access private
    149150         */
    150         public $version = '1.6.3';
     151        public $version = '1.6.4';
    151152        /**
    152153         * Stores the settings
     
    416417        public function _add_token($type, $data, $do = false) {
    417418                if ($this->get_cfg('preserve_css') || $do) {
    418                         $this->tokens[] = array($type, ($type == COMMENT) ? $data : trim($data));
     419                        $this->tokens[] = array($type, ($type == COMMENT or $type == IMPORTANT_COMMENT) ? $data : trim($data));
    419420                }
    420421        }
     
    952953                                                $this->status = array_pop($this->from);
    953954                                                $i++;
    954                                                 $this->_add_token(COMMENT, $cur_comment);
     955                                                if (strlen($cur_comment) > 1 and strncmp($cur_comment, '!', 1) === 0) {
     956                                                        $this->_add_token(IMPORTANT_COMMENT, $cur_comment);
     957                                                        $this->css_add_important_comment($cur_comment);
     958                                                }
     959                                                else {
     960                                                        $this->_add_token(COMMENT, $cur_comment);
     961                                                }
    955962                                                $cur_comment = '';
    956963                                        } else {
     
    10391046        static function escaped(&$string, $pos) {
    10401047                return!(@($string{$pos - 1} !== '\\') || csstidy::escaped($string, $pos - 1));
     1048        }
     1049
     1050
     1051        /**
     1052         * Add an important comment to the css code
     1053         * (one we want to keep)
     1054         * @param $comment
     1055         */
     1056        public function css_add_important_comment($comment) {
     1057                if ($this->get_cfg('preserve_css') || trim($comment) == '') {
     1058                        return;
     1059                }
     1060                if (!isset($this->css['!'])) {
     1061                        $this->css['!'] = '';
     1062                }
     1063                else {
     1064                        $this->css['!'] .= "\n";
     1065                }
     1066                $this->css['!'] .= $comment;
    10411067        }
    10421068
  • _core_/branches/spip-3.2/plugins/compresseur/lib/csstidy/class.csstidy_optimise.php

    r111766 r111780  
    7575
    7676                        foreach ($this->css as $medium => $selectors) {
    77                                 foreach ($selectors as $selector => $properties) {
    78                                         $this->css[$medium][$selector] = $this->reverse_left_and_right($this->css[$medium][$selector]);
     77                                if (is_array($selectors)) {
     78                                        foreach ($selectors as $selector => $properties) {
     79                                                $this->css[$medium][$selector] = $this->reverse_left_and_right($this->css[$medium][$selector]);
     80                                        }
    7981                                }
    8082                        }
     
    8890                if ((int)$this->parser->get_cfg('merge_selectors') === 2) {
    8991                        foreach ($this->css as $medium => $value) {
    90                                 $this->merge_selectors($this->css[$medium]);
     92                                if (is_array($value)) {
     93                                        $this->merge_selectors($this->css[$medium]);
     94                                }
    9195                        }
    9296                }
     
    9498                if ($this->parser->get_cfg('discard_invalid_selectors')) {
    9599                        foreach ($this->css as $medium => $value) {
    96                                 $this->discard_invalid_selectors($this->css[$medium]);
     100                                if (is_array($value)) {
     101                                        $this->discard_invalid_selectors($this->css[$medium]);
     102                                }
    97103                        }
    98104                }
     
    100106                if ($this->parser->get_cfg('optimise_shorthands') > 0) {
    101107                        foreach ($this->css as $medium => $value) {
    102                                 foreach ($value as $selector => $value1) {
    103                                         $this->css[$medium][$selector] = $this->merge_4value_shorthands($this->css[$medium][$selector]);
    104                                         $this->css[$medium][$selector] = $this->merge_4value_radius_shorthands($this->css[$medium][$selector]);
    105 
    106                                         if ($this->parser->get_cfg('optimise_shorthands') < 2) {
    107                                                 continue;
    108                                         }
    109 
    110                                         $this->css[$medium][$selector] = $this->merge_font($this->css[$medium][$selector]);
    111 
    112                                         if ($this->parser->get_cfg('optimise_shorthands') < 3) {
    113                                                 continue;
    114                                         }
    115 
    116                                         $this->css[$medium][$selector] = $this->merge_bg($this->css[$medium][$selector]);
    117                                         if (empty($this->css[$medium][$selector])) {
    118                                                 unset($this->css[$medium][$selector]);
     108                                if (is_array($value)) {
     109                                        foreach ($value as $selector => $value1) {
     110                                                $this->css[$medium][$selector] = $this->merge_4value_shorthands($this->css[$medium][$selector]);
     111                                                $this->css[$medium][$selector] = $this->merge_4value_radius_shorthands($this->css[$medium][$selector]);
     112
     113                                                if ($this->parser->get_cfg('optimise_shorthands') < 2) {
     114                                                        continue;
     115                                                }
     116
     117                                                $this->css[$medium][$selector] = $this->merge_font($this->css[$medium][$selector]);
     118
     119                                                if ($this->parser->get_cfg('optimise_shorthands') < 3) {
     120                                                        continue;
     121                                                }
     122
     123                                                $this->css[$medium][$selector] = $this->merge_bg($this->css[$medium][$selector]);
     124                                                if (empty($this->css[$medium][$selector])) {
     125                                                        unset($this->css[$medium][$selector]);
     126                                                }
    119127                                        }
    120128                                }
  • _core_/branches/spip-3.2/plugins/compresseur/lib/csstidy/class.csstidy_print.php

    r106461 r111780  
    270270                                        break;
    271271
     272                                case IMPORTANT_COMMENT:
    272273                                case COMMENT:
    273274                                        $out .= $template[11] . '/*' . $this->_htmlsp($token[1], $plain) . '*/' . $template[12];
     
    319320                $sort_selectors = $this->parser->get_cfg('sort_selectors');
    320321                $sort_properties = $this->parser->get_cfg('sort_properties');
     322
     323                // important comment section ?
     324                if (isset($this->css['!'])) {
     325                        $this->parser->_add_token(IMPORTANT_COMMENT, rtrim($this->css['!']), true);
     326                        unset($this->css['!']);
     327                }
    321328
    322329                foreach ($this->css as $medium => $val) {
  • _core_/branches/spip-3.2/plugins/compresseur/lib/csstidy/data.inc.php

    r111766 r111780  
    616616$data['csstidy']['predefined_templates']['high_compression'][] = '';
    617617$data['csstidy']['predefined_templates']['high_compression'][] = '<span class="comment">'; // before comment
    618 $data['csstidy']['predefined_templates']['high_compression'][] = '</span>'; // after comment
     618$data['csstidy']['predefined_templates']['high_compression'][] = '</span>'."\n"; // after comment
    619619$data['csstidy']['predefined_templates']['high_compression'][] = "\n";
    620620
  • _core_/branches/spip-3.2/plugins/compresseur/paquet.xml

    r111766 r111780  
    22        prefix="compresseur"
    33        categorie="performance"
    4         version="1.12.6"
     4        version="1.12.7"
    55        etat="stable"
    66        compatibilite="[3.2.0;3.2.*]"
Note: See TracChangeset for help on using the changeset viewer.