diff options
author | Jasper Van der Jeugt <jaspervdj@gmail.com> | 2013-12-18 01:54:56 -0800 |
---|---|---|
committer | Jasper Van der Jeugt <jaspervdj@gmail.com> | 2013-12-18 01:54:56 -0800 |
commit | 062d78eaf4ad1bc78ff03fc5d6831df26b558691 (patch) | |
tree | 5186e125bf61cf981872a7c45e1a8bb90c8f4fee /src | |
parent | 2188b248a37157ba1f5c35a8674890ed80d0a3ef (diff) | |
parent | d2773448c20fef4439080f61c5262588be3992cb (diff) | |
download | stylish-haskell-062d78eaf4ad1bc78ff03fc5d6831df26b558691.tar.gz |
Merge pull request #34 from konn/master
Added new pragma style `line'
Diffstat (limited to 'src')
-rw-r--r-- | src/Language/Haskell/Stylish/Config.hs | 6 | ||||
-rw-r--r-- | src/Language/Haskell/Stylish/Step/LanguagePragmas.hs | 29 |
2 files changed, 26 insertions, 9 deletions
diff --git a/src/Language/Haskell/Stylish/Config.hs b/src/Language/Haskell/Stylish/Config.hs index 6c05e0a..2dd79a8 100644 --- a/src/Language/Haskell/Stylish/Config.hs +++ b/src/Language/Haskell/Stylish/Config.hs @@ -178,9 +178,9 @@ parseLanguagePragmas config o = LanguagePragmas.step <*> o A..:? "remove_redundant" A..!= True where styles = - [ ("vertical", LanguagePragmas.Vertical) - , ("compact", LanguagePragmas.Compact) - ] + [ ("vertical", LanguagePragmas.Vertical) + , ("compact", LanguagePragmas.Compact) + , ("compact_line", LanguagePragmas.CompactLine)] -------------------------------------------------------------------------------- diff --git a/src/Language/Haskell/Stylish/Step/LanguagePragmas.hs b/src/Language/Haskell/Stylish/Step/LanguagePragmas.hs index a39e88d..48db19b 100644 --- a/src/Language/Haskell/Stylish/Step/LanguagePragmas.hs +++ b/src/Language/Haskell/Stylish/Step/LanguagePragmas.hs @@ -14,16 +14,17 @@ import qualified Language.Haskell.Exts.Annotated as H -------------------------------------------------------------------------------- -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,10 +56,27 @@ compactPragmas columns pragmas' = wrap columns "{-# LANGUAGE" 13 $ -------------------------------------------------------------------------------- +compactLinePragmas :: Int -> [String] -> Lines +compactLinePragmas _ [] = [] +compactLinePragmas columns pragmas' = + let maxWidth = columns - 14 + prags = map truncateComma $ wrap maxWidth "" 1 $ + map (++ ",") (init pragmas') ++ [last pragmas'] + longest = maximum $ map length prags + 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 columns _ CompactLine = compactLinePragmas columns -------------------------------------------------------------------------------- -- | Filter redundant (and duplicate) pragmas out of the groups. As a side @@ -76,7 +94,6 @@ filterRedundant isRedundant' = snd . foldr filterRedundant' (S.empty, []) xs' = S.fromList fxs `S.difference` known known' = xs' `S.union` known - -------------------------------------------------------------------------------- step :: Int -> Style -> Bool -> Step step columns style = makeStep "LanguagePragmas" . step' columns style |