1
0
mirror of https://github.com/mrclay/minify.git synced 2025-08-14 01:54:11 +02:00

update cssmin to v2.4.8-4. fixes #123

This commit is contained in:
Elan Ruusamäe
2014-09-25 14:40:53 +03:00
parent bceffd5afb
commit bd9a450694
2 changed files with 17 additions and 9 deletions

View File

@@ -16,11 +16,17 @@
"issues": "http://code.google.com/p/minify/issues/list", "issues": "http://code.google.com/p/minify/issues/list",
"wiki": "http://code.google.com/p/minify/w/list" "wiki": "http://code.google.com/p/minify/w/list"
}, },
"autoload": {
"classmap": ["min/lib/"]
},
"require": { "require": {
"php": ">=5.2.1", "php": ">=5.2.1",
"ext-pcre": "*" "ext-pcre": "*"
}, },
"autoload": { "require-dev": {
"classmap": ["min/lib/"] "tubalmartin/cssmin": "~2.4.8"
},
"suggest": {
"tubalmartin/cssmin": "Support minify with CSSMin (YUI PHP port)"
} }
} }

View File

@@ -1,7 +1,7 @@
<?php <?php
/*! /*!
* cssmin.php 2.4.8-2 * cssmin.php v2.4.8-4
* Author: Tubal Martin - http://tubalmartin.me/ * Author: Tubal Martin - http://tubalmartin.me/
* Repo: https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port * Repo: https://github.com/tubalmartin/YUI-CSS-compressor-PHP-port
* *
@@ -107,7 +107,7 @@ class CSSmin
$l = strlen($css); $l = strlen($css);
// if the number of characters is 25000 or less, do not chunk // if the number of characters is 5000 or less, do not chunk
if ($l <= $css_chunk_length) { if ($l <= $css_chunk_length) {
$css_chunks[] = $css; $css_chunks[] = $css;
} else { } else {
@@ -291,7 +291,7 @@ class CSSmin
// Remove the spaces before the things that should not have spaces before them. // Remove the spaces before the things that should not have spaces before them.
// But, be careful not to turn "p :link {...}" into "p:link{...}" // But, be careful not to turn "p :link {...}" into "p:link{...}"
// Swap out any pseudo-class colons with the token, and then swap back. // Swap out any pseudo-class colons with the token, and then swap back.
$css = preg_replace_callback('/(?:^|\})(?:(?:[^\{\:])+\:)+(?:[^\{]*\{)/', array($this, 'replace_colon'), $css); $css = preg_replace_callback('/(?:^|\})[^\{]*\s+\:/', array($this, 'replace_colon'), $css);
// Remove spaces before the things that should not have spaces before them. // Remove spaces before the things that should not have spaces before them.
$css = preg_replace('/\s+([\!\{\}\;\:\>\+\(\)\]\~\=,])/', '$1', $css); $css = preg_replace('/\s+([\!\{\}\;\:\>\+\(\)\]\~\=,])/', '$1', $css);
@@ -336,11 +336,13 @@ class CSSmin
// to avoid issues on Symbian S60 3.x browsers. // to avoid issues on Symbian S60 3.x browsers.
$css = preg_replace('/(\*[a-z0-9\-]+\s*\:[^;\}]+)(\})/', '$1;$2', $css); $css = preg_replace('/(\*[a-z0-9\-]+\s*\:[^;\}]+)(\})/', '$1;$2', $css);
// Replace 0 length units 0(px,em,%) with 0. // Replace 0 <length> and 0 <percentage> values with 0.
$css = preg_replace('/(^|[^0-9])(?:0?\.)?0(?:em|ex|ch|rem|vw|vh|vm|vmin|cm|mm|in|px|pt|pc|%|deg|g?rad|m?s|k?hz)/iS', '${1}0', $css); // <length> data type: https://developer.mozilla.org/en-US/docs/Web/CSS/length
// <percentage> data type: https://developer.mozilla.org/en-US/docs/Web/CSS/percentage
$css = preg_replace('/([^\\\\]\:|\s)0(?:em|ex|ch|rem|vw|vh|vm|vmin|cm|mm|in|px|pt|pc|%)/iS', '${1}0', $css);
// 0% step in a keyframe? restore the % unit // 0% step in a keyframe? restore the % unit
$css = preg_replace_callback('/(@[a-z\-]*?keyframes[^\{]*?\{)(.*?\}\s*\})/iS', array($this, 'replace_keyframe_zero'), $css); $css = preg_replace_callback('/(@[a-z\-]*?keyframes[^\{]+\{)(.*?)(\}\})/iS', array($this, 'replace_keyframe_zero'), $css);
// Replace 0 0; or 0 0 0; or 0 0 0 0; with 0. // Replace 0 0; or 0 0 0; or 0 0 0 0; with 0.
$css = preg_replace('/\:0(?: 0){1,3}(;|\}| \!)/', ':0$1', $css); $css = preg_replace('/\:0(?: 0){1,3}(;|\}| \!)/', ':0$1', $css);
@@ -596,7 +598,7 @@ class CSSmin
private function replace_keyframe_zero($matches) private function replace_keyframe_zero($matches)
{ {
return $matches[1] . preg_replace('/0\s*,/', '0%,', preg_replace('/\s*0\s*\{/', '0%{', $matches[2])); return $matches[1] . preg_replace('/0(\{|,[^\)\{]+\{)/', '0%$1', $matches[2]) . $matches[3];
} }
private function rgb_to_hex($matches) private function rgb_to_hex($matches)