stylish-haskell 0.5.8.0 → 0.5.9.0
raw patch · 5 files changed
+55/−16 lines, 5 files
Files
- data/stylish-haskell.yaml +3/−0
- src/Language/Haskell/Stylish/Config.hs +3/−3
- src/Language/Haskell/Stylish/Step/LanguagePragmas.hs +29/−7
- stylish-haskell.cabal +1/−1
- tests/Language/Haskell/Stylish/Step/LanguagePragmas/Tests.hs +19/−5
data/stylish-haskell.yaml view
@@ -41,6 +41,9 @@ # # - compact: A more compact style. #+ # - compact_line: Similar to compact, but wrap each line with+ # `{-#LANGUAGE #-}'.+ # # Default: vertical. style: vertical
src/Language/Haskell/Stylish/Config.hs view
@@ -178,9 +178,9 @@ <*> o A..:? "remove_redundant" A..!= True where styles =- [ ("vertical", LanguagePragmas.Vertical)- , ("compact", LanguagePragmas.Compact)- ]+ [ ("vertical", LanguagePragmas.Vertical)+ , ("compact", LanguagePragmas.Compact)+ , ("compact_line", LanguagePragmas.CompactLine)] --------------------------------------------------------------------------------
src/Language/Haskell/Stylish/Step/LanguagePragmas.hs view
@@ -14,16 +14,17 @@ ---------------------------------------------------------------------------------import Language.Haskell.Stylish.Block-import Language.Haskell.Stylish.Editor-import Language.Haskell.Stylish.Step-import Language.Haskell.Stylish.Util+import Language.Haskell.Stylish.Block+import Language.Haskell.Stylish.Editor+import Language.Haskell.Stylish.Step+import Language.Haskell.Stylish.Util -------------------------------------------------------------------------------- data Style = Vertical | Compact+ | CompactLine deriving (Eq, Show) @@ -55,9 +56,31 @@ --------------------------------------------------------------------------------+compactLinePragmas :: Int -> [String] -> Lines+compactLinePragmas _ [] = []+compactLinePragmas columns pragmas' =+ let maxWidth = columns - 16+ longest = maximum $ map length prags+ prags = map truncateComma $ wrap maxWidth "" 1 $+ map (++ ",") (init pragmas') ++ [last pragmas']+ in map (wrapLanguage . padRight longest) prags+ where+ wrapLanguage ps = "{-# LANGUAGE" ++ ps ++ " #-}"+++--------------------------------------------------------------------------------+truncateComma :: String -> String+truncateComma "" = ""+truncateComma xs+ | last xs == ',' = init xs+ | otherwise = xs+++-------------------------------------------------------------------------------- prettyPragmas :: Int -> Int -> Style -> [String] -> Lines-prettyPragmas _ longest Vertical = verticalPragmas longest-prettyPragmas columns _ Compact = compactPragmas columns+prettyPragmas _ longest Vertical = verticalPragmas longest+prettyPragmas columns _ Compact = compactPragmas columns+prettyPragmas columns _ CompactLine = compactLinePragmas columns --------------------------------------------------------------------------------@@ -75,7 +98,6 @@ fxs = filter (not . isRedundant') xs xs' = S.fromList fxs `S.difference` known known' = xs' `S.union` known- -------------------------------------------------------------------------------- step :: Int -> Style -> Bool -> Step
stylish-haskell.cabal view
@@ -1,5 +1,5 @@ Name: stylish-haskell-Version: 0.5.8.0+Version: 0.5.9.0 Synopsis: Haskell code prettifier Homepage: https://github.com/jaspervdj/stylish-haskell License: BSD3
tests/Language/Haskell/Stylish/Step/LanguagePragmas/Tests.hs view
@@ -5,14 +5,14 @@ ---------------------------------------------------------------------------------import Test.Framework (Test, testGroup)-import Test.Framework.Providers.HUnit (testCase)-import Test.HUnit (Assertion, (@=?))+import Test.Framework (Test, testGroup)+import Test.Framework.Providers.HUnit (testCase)+import Test.HUnit (Assertion, (@=?)) ---------------------------------------------------------------------------------import Language.Haskell.Stylish.Step.LanguagePragmas-import Language.Haskell.Stylish.Tests.Util+import Language.Haskell.Stylish.Step.LanguagePragmas+import Language.Haskell.Stylish.Tests.Util --------------------------------------------------------------------------------@@ -112,4 +112,18 @@ , "#if __GLASGOW_HASKELL__ >= 702" , "{-# LANGUAGE Trustworthy #-}" , "#endif"+ ]++case06 :: Assertion+case06 = expected @=? testStep (step 80 CompactLine True) input+ where+ input = unlines+ [ "{-# LANGUAGE TypeOperators, StandaloneDeriving, DeriveDataTypeable,"+ , " TemplateHaskell #-}"+ , "{-# LANGUAGE TemplateHaskell, ViewPatterns #-}"+ ]+ expected = unlines+ [ "{-# LANGUAGE DeriveDataTypeable, StandaloneDeriving, " +++ "TemplateHaskell #-}"+ , "{-# LANGUAGE TypeOperators, ViewPatterns #-}" ]