From 2f0adcf358df0ba4c734fca0d95902c625a51286 Mon Sep 17 00:00:00 2001 From: Juetta <1123612483@qq.com> Date: Tue, 1 Dec 2020 12:26:33 +0800 Subject: [PATCH 1/2] Fix 8-digit hexadecimal color code compression exception --- src/Yahoo.Yui.Compressor/CssCompressor.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Yahoo.Yui.Compressor/CssCompressor.cs b/src/Yahoo.Yui.Compressor/CssCompressor.cs index 41baeb5..2bd5b07 100644 --- a/src/Yahoo.Yui.Compressor/CssCompressor.cs +++ b/src/Yahoo.Yui.Compressor/CssCompressor.cs @@ -15,7 +15,7 @@ public class CssCompressor : Compressor, ICssCompressor private static Regex spaceRemoverRegex = new Regex("(^|\\})(([^\\{:])+:)+([^\\{]*\\{)", RegexOptions.Compiled); private static Regex backgroundPositionRegex = new Regex("(?i)(background-position|transform-origin|webkit-transform-origin|moz-transform-origin|o-transform-origin|ms-transform-origin):0(;|})", RegexOptions.Compiled); private static Regex colorRegex = new Regex("rgb\\s*\\(\\s*([0-9,\\s]+)\\s*\\)", RegexOptions.Compiled); - private static Regex colorShortenerRegex = new Regex("([^\"'=\\s])(\\s*)#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])", RegexOptions.Compiled); + private static Regex colorShortenerRegex = new Regex("([^\"'=\\s])(\\s*)#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])(?![0-9a-fA-F]{2})", RegexOptions.Compiled); private static Regex borderRegex = new Regex("(?i)(border|border-top|border-right|border-bottom|border-right|outline|background):none(;|})", RegexOptions.Compiled); private static Regex emptyRuleRegex = new Regex("[^\\}\\{/;]+\\{\\}", RegexOptions.Compiled); From 0bd878d3c261a1ec1ce91c27450fc4e04372c1ce Mon Sep 17 00:00:00 2001 From: Juetta <1123612483@qq.com> Date: Tue, 1 Dec 2020 15:45:08 +0800 Subject: [PATCH 2/2] Add a test that the 8-digit hexadecimal color code is not compressed. --- .../CssCompressorTest.cs | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/tests/Yahoo.Yui.Compressor.Tests/CssCompressorTest.cs b/tests/Yahoo.Yui.Compressor.Tests/CssCompressorTest.cs index 2cba5c8..6d222de 100644 --- a/tests/Yahoo.Yui.Compressor.Tests/CssCompressorTest.cs +++ b/tests/Yahoo.Yui.Compressor.Tests/CssCompressorTest.cs @@ -203,6 +203,20 @@ public void Color_Styles_Have_Unquoted_Hex_Values_Compressed_To_Shorter_Equivale CompressAndCompare(source, expected); } + [Test] + public void Color_Styles_Have_8bit_Hex_Values_Compressed_To_Shorter_Equivalents() + { + // Arrange + const string source = @".color { + color: #ffeedd50; + background-color: #FFFFFF50; + }"; + const string expected = @".color{color:#ffeedd50;background-color:#FFFFFF50}"; + + // Act & Assert + CompressAndCompare(source, expected); + } + [Test] [Description("http://en.wikipedia.org/wiki/CSS_filter#Child_selector_hack")] public void Empty_Comments_After_A_Child_Selector_Are_Preserved_As_Hack_For_IE7()