diff options
-rw-r--r-- | README.markdown | 13 | ||||
-rw-r--r-- | src/Main.hs | 2 | ||||
-rw-r--r-- | src/StylishHaskell/Block.hs | 2 | ||||
-rw-r--r-- | src/StylishHaskell/Tabs.hs | 22 | ||||
-rw-r--r-- | stylish-haskell.cabal | 2 | ||||
-rw-r--r-- | tests/StylishHaskell/Tabs/Tests.hs | 42 | ||||
-rw-r--r-- | tests/StylishHaskell/TrailingWhitespace/Tests.hs | 4 | ||||
-rw-r--r-- | tests/TestSuite.hs | 2 |
8 files changed, 75 insertions, 14 deletions
diff --git a/README.markdown b/README.markdown index b982f1e..d2da60a 100644 --- a/README.markdown +++ b/README.markdown @@ -11,14 +11,7 @@ A simple Haskell code prettifier Features -------- -- Align and sort `import` statements -- Groups and wraps `{-# LANGUAGE #-}` pragmas (TODO) +- Aligns and sorts `import` statements +- Groups and wraps `{-# LANGUAGE #-}` pragmas (WIP) - Removes trailing whitespace - -Status ------- - -Doesn't yet work for multi-line imports, e.g., - - import Control.Monad (forM, - replicateM) +- Replaces tabs by four spaces diff --git a/src/Main.hs b/src/Main.hs index d20586b..286c835 100644 --- a/src/Main.hs +++ b/src/Main.hs @@ -15,6 +15,7 @@ import StylishHaskell.Block import qualified StylishHaskell.Imports import qualified StylishHaskell.LanguagePragmas import StylishHaskell.Parse +import qualified StylishHaskell.Tabs import qualified StylishHaskell.TrailingWhitespace @@ -43,5 +44,6 @@ main = do filters = [ StylishHaskell.Imports.stylish , StylishHaskell.LanguagePragmas.stylish + , StylishHaskell.Tabs.stylish , StylishHaskell.TrailingWhitespace.stylish ] diff --git a/src/StylishHaskell/Block.hs b/src/StylishHaskell/Block.hs index f9664b5..3b07aa9 100644 --- a/src/StylishHaskell/Block.hs +++ b/src/StylishHaskell/Block.hs @@ -13,7 +13,7 @@ module StylishHaskell.Block -------------------------------------------------------------------------------- -import Control.Arrow (arr, (>>>), (&&&)) +import Control.Arrow (arr, (&&&), (>>>)) import qualified Language.Haskell.Exts.Annotated as H diff --git a/src/StylishHaskell/Tabs.hs b/src/StylishHaskell/Tabs.hs new file mode 100644 index 0000000..0d2cf9f --- /dev/null +++ b/src/StylishHaskell/Tabs.hs @@ -0,0 +1,22 @@ +-------------------------------------------------------------------------------- +module StylishHaskell.Tabs + ( stylish + ) where + + +-------------------------------------------------------------------------------- +import StylishHaskell.Block +import StylishHaskell.Parse + + +-------------------------------------------------------------------------------- +removeTabs :: String -> String +removeTabs = concatMap removeTabs' + where + removeTabs' '\t' = " " + removeTabs' x = [x] + + +-------------------------------------------------------------------------------- +stylish :: Lines -> Module -> Lines +stylish ls _ = map removeTabs ls diff --git a/stylish-haskell.cabal b/stylish-haskell.cabal index fcc953b..872fcfd 100644 --- a/stylish-haskell.cabal +++ b/stylish-haskell.cabal @@ -22,6 +22,7 @@ Executable stylish-haskell StylishHaskell.Editor StylishHaskell.Imports StylishHaskell.LanguagePragmas + StylishHaskell.Tabs StylishHaskell.TrailingWhitespace StylishHaskell.Parse StylishHaskell.Util @@ -40,6 +41,7 @@ Test-suite stylish-haskell-tests StylishHaskell.Imports.Tests StylishHaskell.LanguagePragmas.Tests StylishHaskell.Tests.Util + StylishHaskell.Tabs.Tests StylishHaskell.TrailingWhitespace.Tests Build-depends: diff --git a/tests/StylishHaskell/Tabs/Tests.hs b/tests/StylishHaskell/Tabs/Tests.hs new file mode 100644 index 0000000..9e66d6b --- /dev/null +++ b/tests/StylishHaskell/Tabs/Tests.hs @@ -0,0 +1,42 @@ +-------------------------------------------------------------------------------- +module StylishHaskell.Tabs.Tests + ( tests + ) where + + +-------------------------------------------------------------------------------- +import Test.Framework (Test, testGroup) +import Test.Framework.Providers.HUnit (testCase) +import Test.HUnit ((@=?)) + + +-------------------------------------------------------------------------------- +import StylishHaskell.Tabs +import StylishHaskell.Tests.Util + + +-------------------------------------------------------------------------------- +tests :: Test +tests = testGroup "StylishHaskell.Tabs.Tests" [case01] + + +-------------------------------------------------------------------------------- +case01 :: Test +case01 = testCase "case 01" $ expected @=? testStylish stylish input + where + input = unlines + [ "module Main" + , "\t\twhere" + , "data Foo" + , "\t= Bar" + , " | Qux" + ] + + expected = unlines + [ "module Main" + , " where" + , "data Foo" + , " = Bar" + , " | Qux" + ] + diff --git a/tests/StylishHaskell/TrailingWhitespace/Tests.hs b/tests/StylishHaskell/TrailingWhitespace/Tests.hs index 9fa22c2..2f12113 100644 --- a/tests/StylishHaskell/TrailingWhitespace/Tests.hs +++ b/tests/StylishHaskell/TrailingWhitespace/Tests.hs @@ -17,9 +17,7 @@ import StylishHaskell.Tests.Util -------------------------------------------------------------------------------- tests :: Test -tests = testGroup "StylishHaskell.TrailingWhitespace.Tests" - [ case01 - ] +tests = testGroup "StylishHaskell.TrailingWhitespace.Tests" [case01] -------------------------------------------------------------------------------- diff --git a/tests/TestSuite.hs b/tests/TestSuite.hs index 49f91a0..71a1bec 100644 --- a/tests/TestSuite.hs +++ b/tests/TestSuite.hs @@ -11,6 +11,7 @@ import Test.Framework (defaultMain) -------------------------------------------------------------------------------- import qualified StylishHaskell.Imports.Tests import qualified StylishHaskell.LanguagePragmas.Tests +import qualified StylishHaskell.Tabs.Tests import qualified StylishHaskell.TrailingWhitespace.Tests @@ -19,5 +20,6 @@ main :: IO () main = defaultMain [ StylishHaskell.Imports.Tests.tests , StylishHaskell.LanguagePragmas.Tests.tests + , StylishHaskell.Tabs.Tests.tests , StylishHaskell.TrailingWhitespace.Tests.tests ] |