-------------------------------------------------------------------------------- module Main ( main ) where -------------------------------------------------------------------------------- import Control.Applicative ((<$>)) import Data.Maybe (listToMaybe) import System.Environment (getArgs) -------------------------------------------------------------------------------- import qualified StylishHaskell.Imports import qualified StylishHaskell.LanguagePragmas import StylishHaskell.Parse import StylishHaskell.Stylish import qualified StylishHaskell.TrailingWhitespace -------------------------------------------------------------------------------- runStylish :: Maybe FilePath -> Stylish -> Lines -> Lines runStylish mfp f ls = case parseModule mfp (unlines ls) of Left err -> error err -- TODO: maybe return original lines? Right module' -> f ls module' -------------------------------------------------------------------------------- chainStylish :: Maybe FilePath -> [Stylish] -> Lines -> Lines chainStylish mfp filters = foldr (.) id filters' where filters' :: [Lines -> Lines] filters' = map (runStylish mfp) filters -------------------------------------------------------------------------------- main :: IO () main = do filePath <- listToMaybe <$> getArgs contents <- maybe getContents readFile filePath putStr $ unlines $ chainStylish filePath filters $ lines contents where filters = [ StylishHaskell.Imports.stylish , StylishHaskell.LanguagePragmas.stylish -- , StylishHaskell.Tabs.stylish , StylishHaskell.TrailingWhitespace.stylish ]