summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--README.markdown13
-rw-r--r--src/Main.hs2
-rw-r--r--src/StylishHaskell/Block.hs2
-rw-r--r--src/StylishHaskell/Tabs.hs22
-rw-r--r--stylish-haskell.cabal2
-rw-r--r--tests/StylishHaskell/Tabs/Tests.hs42
-rw-r--r--tests/StylishHaskell/TrailingWhitespace/Tests.hs4
-rw-r--r--tests/TestSuite.hs2
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
]