module Language.Haskell.Format ( autoSettings, format, formatters, hlint, hindent, stylish, Settings, Formatter(..), Suggestion(..), HaskellSource(..), Reformatted(..), ) where import Language.Haskell.Format.Definitions import qualified Language.Haskell.Format.HIndent as HIndent import qualified Language.Haskell.Format.HLint as HLint import qualified Language.Haskell.Format.Stylish as Stylish import Control.Applicative import Data.Maybe data Settings = Settings autoSettings :: IO Settings autoSettings = return Settings hlint :: Settings -> IO Formatter hlint _ = HLint.suggester <$> HLint.autoSettings hindent :: Settings -> IO Formatter hindent _ = HIndent.formatter <$> HIndent.autoSettings stylish :: Settings -> IO Formatter stylish _ = Stylish.formatter <$> Stylish.autoSettings formatters :: Settings -> IO [Formatter] formatters s = sequence [hlint s, hindent s, stylish s] format :: Formatter -> HaskellSource -> Either String Reformatted format = unFormatter