summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
authorJasper Van der Jeugt <m@jaspervdj.be>2012-05-26 12:57:02 +0200
committerJasper Van der Jeugt <m@jaspervdj.be>2012-05-26 12:57:02 +0200
commit1cb4dfa7a6da3f3c52e9c5df0bbe550cff4e5c4b (patch)
tree7daba5bd7d815f7d689a4fffcba04f1072b16e61
parent20286bc3be2bc324e9273b5ca68ff9b00a9efcd2 (diff)
downloadstylish-haskell-1cb4dfa7a6da3f3c52e9c5df0bbe550cff4e5c4b.tar.gz
Filter composition in Main
-rw-r--r--src/Main.hs37
1 files changed, 26 insertions, 11 deletions
diff --git a/src/Main.hs b/src/Main.hs
index 28cf740..d20586b 100644
--- a/src/Main.hs
+++ b/src/Main.hs
@@ -5,23 +5,32 @@ module Main
--------------------------------------------------------------------------------
-import Control.Applicative ((<$>))
-import Data.Maybe (listToMaybe)
-import System.Environment (getArgs)
+import Control.Applicative ((<$>))
+import Data.Maybe (listToMaybe)
+import System.Environment (getArgs)
--------------------------------------------------------------------------------
-import StylishHaskell.Imports
+import StylishHaskell.Block
+import qualified StylishHaskell.Imports
+import qualified StylishHaskell.LanguagePragmas
import StylishHaskell.Parse
+import qualified StylishHaskell.TrailingWhitespace
--------------------------------------------------------------------------------
-stylishHaskell :: Maybe FilePath -> String -> IO ()
-stylishHaskell mfp string = case parseModule mfp string of
- Left err -> error err
- Right module' -> do
- let ls = stylish (lines string) module'
- putStr $ unlines ls
+runFilter :: Maybe FilePath -> (Lines -> Module -> Lines) -> Lines -> Lines
+runFilter mfp f ls = case parseModule mfp (unlines ls) of
+ Left err -> error err -- TODO: maybe return original lines?
+ Right module' -> f ls module'
+
+
+--------------------------------------------------------------------------------
+runFilters :: Maybe FilePath -> [Lines -> Module -> Lines] -> Lines -> Lines
+runFilters mfp filters = foldr (.) id filters'
+ where
+ filters' :: [Lines -> Lines]
+ filters' = map (runFilter mfp) filters
--------------------------------------------------------------------------------
@@ -29,4 +38,10 @@ main :: IO ()
main = do
filePath <- listToMaybe <$> getArgs
contents <- maybe getContents readFile filePath
- stylishHaskell filePath contents
+ putStr $ unlines $ runFilters filePath filters $ lines contents
+ where
+ filters =
+ [ StylishHaskell.Imports.stylish
+ , StylishHaskell.LanguagePragmas.stylish
+ , StylishHaskell.TrailingWhitespace.stylish
+ ]