diff options
author | Jasper Van der Jeugt <m@jaspervdj.be> | 2012-05-26 12:57:02 +0200 |
---|---|---|
committer | Jasper Van der Jeugt <m@jaspervdj.be> | 2012-05-26 12:57:02 +0200 |
commit | 1cb4dfa7a6da3f3c52e9c5df0bbe550cff4e5c4b (patch) | |
tree | 7daba5bd7d815f7d689a4fffcba04f1072b16e61 | |
parent | 20286bc3be2bc324e9273b5ca68ff9b00a9efcd2 (diff) | |
download | stylish-haskell-1cb4dfa7a6da3f3c52e9c5df0bbe550cff4e5c4b.tar.gz |
Filter composition in Main
-rw-r--r-- | src/Main.hs | 37 |
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 + ] |