module Language.Haskell.Format.HIndent (autoSettings, formatter, defaultFormatter) where import Control.Applicative import Data.Maybe import Data.Text.Lazy as L import Data.Text.Lazy.Builder import HIndent import Language.Haskell.Exts.Extension (Extension) import Language.Haskell.Format.Definitions import Language.Haskell.Format.Internal data Settings = Settings Style (Maybe [Extension]) defaultFormatter :: IO Formatter defaultFormatter = formatter <$> autoSettings autoSettings :: IO Settings autoSettings = return (Settings gibiansky Nothing) formatter :: Settings -> Formatter formatter = mkFormatter . hindent hindent :: Settings -> HaskellSource -> Either String HaskellSource hindent (Settings style extensions) (HaskellSource source) = HaskellSource . L.unpack . toLazyText <$> reformat style extensions sourceText where sourceText = L.pack source