-------------------------------------------------------------------------------- module Language.Haskell.Stylish ( -- * Run runSteps -- * Steps , imports , languagePragmas , records , tabs , trailingWhitespace , unicodeSyntax -- ** Data types , Imports.Align (..) , LanguagePragmas.Style (..) -- ** Helpers , stepName -- * Config , module Language.Haskell.Stylish.Config -- * Misc , module Language.Haskell.Stylish.Verbose , version , Lines , Step ) where -------------------------------------------------------------------------------- import Control.Applicative ((<$>)) import Control.Monad (foldM) -------------------------------------------------------------------------------- import Language.Haskell.Stylish.Config import Language.Haskell.Stylish.Step import Language.Haskell.Stylish.Verbose import Language.Haskell.Stylish.Parse import Paths_stylish_haskell (version) import qualified Language.Haskell.Stylish.Step.Imports as Imports import qualified Language.Haskell.Stylish.Step.LanguagePragmas as LanguagePragmas import qualified Language.Haskell.Stylish.Step.Records as Records import qualified Language.Haskell.Stylish.Step.Tabs as Tabs import qualified Language.Haskell.Stylish.Step.TrailingWhitespace as TrailingWhitespace import qualified Language.Haskell.Stylish.Step.UnicodeSyntax as UnicodeSyntax -------------------------------------------------------------------------------- imports :: Int -- ^ columns -> Imports.Align -> Step imports = Imports.step -------------------------------------------------------------------------------- languagePragmas :: Int -- ^ columns -> LanguagePragmas.Style -> Bool -- ^ remove redundant? -> Step languagePragmas = LanguagePragmas.step -------------------------------------------------------------------------------- records :: Step records = Records.step -------------------------------------------------------------------------------- tabs :: Int -- ^ number of spaces -> Step tabs = Tabs.step -------------------------------------------------------------------------------- trailingWhitespace :: Step trailingWhitespace = TrailingWhitespace.step -------------------------------------------------------------------------------- unicodeSyntax :: Bool -- ^ add language pragma? -> Step unicodeSyntax = UnicodeSyntax.step -------------------------------------------------------------------------------- runStep :: Extensions -> Maybe FilePath -> Lines -> Step -> Either String Lines runStep exts mfp ls step = stepFilter step ls <$> parseModule exts mfp (unlines ls) -------------------------------------------------------------------------------- runSteps :: Extensions -> Maybe FilePath -> [Step] -> Lines -> Either String Lines runSteps exts mfp steps ls = foldM (runStep exts mfp) ls steps