on master help sign in
We need to constantly check whether we are at the start of a constant, not just once.
0404185Nicole Rauch
src/Hakyll/Web/CompressCss.hs+11−5
@@ -37,11 +37,17 @@ compressSeparators [] = []
37compressSeparators str
37compressSeparators str
38 | isPrefixOf "\"" str = head str : retainConstants compressSeparators "\"" (drop 1 str)
38 | isPrefixOf "\"" str = head str : retainConstants compressSeparators "\"" (drop 1 str)
39 | isPrefixOf "'" str = head str : retainConstants compressSeparators "'" (drop 1 str)
39 | isPrefixOf "'" str = head str : retainConstants compressSeparators "'" (drop 1 str)
40− | otherwise =
40+ | isPrefixOf " " str = compressSeparators (drop 1 str)
41− replaceAll "; *}" (const "}") $
41+ | isPrefixOf " {" str = compressSeparators (drop 1 str)
42− replaceAll " *([{};]) *" (take 1 . dropWhile isSpace) $
42+ | isPrefixOf " }" str = compressSeparators (drop 1 str)
43− replaceAll ";+" (const ";") str
43+ | isPrefixOf " ;" str = compressSeparators (drop 1 str)
44− where
44+ | isPrefixOf ";;" str = compressSeparators (drop 1 str)
45+ | isPrefixOf "{ " str = compressSeparators (head str : (drop 2 str))
46+ | isPrefixOf "} " str = compressSeparators (head str : (drop 2 str))
47+ | isPrefixOf "; " str = compressSeparators (head str : (drop 2 str))
48+ | isPrefixOf ";}" str = '}' : compressSeparators (drop 2 str)
49+ | otherwise = head str : compressSeparators (drop 1 str)
50+
45
51
46--------------------------------------------------------------------------------
52--------------------------------------------------------------------------------
47-- | Compresses all whitespace.
53-- | Compresses all whitespace.
tests/Hakyll/Web/CompressCss/Tests.hs+6−4
@@ -46,11 +46,13 @@ tests = testGroup "Hakyll.Web.CompressCss.Tests" $ concat
46 compressCss "\" ' \""
46 compressCss "\" ' \""
47 , "' \" '" @=?
47 , "' \" '" @=?
48 compressCss "' \" '"
48 compressCss "' \" '"
49+ -- don't compress whitespace in constants in the middle of a string
50+ , "abc '{ '" @=?
51+ compressCss "abc '{ '"
52+ , "abc \"{ \"" @=?
53+ compressCss "abc \"{ \""
54+ -- compress multiple semicolons
49 , ";" @=?
55 , ";" @=?
50 compressCss ";;;;;;;"
56 compressCss ";;;;;;;"
51−
52− -- some real-life css
53− , "a:after{content: \" (\" attr(href) \")\"}" @=?
54− compressCss "a:after { content: \" (\" attr(href) \")\"; }"
55 ]
57 ]
56 ]
58 ]