hfmt-0.0.2.3: src/Language/Haskell/Format/HIndent.hs
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