summaryrefslogtreecommitdiffhomepage
path: root/lib/Language/Haskell/Stylish.hs
diff options
context:
space:
mode:
authorJasper Van der Jeugt <m@jaspervdj.be>2016-02-01 11:12:59 +0100
committerJasper Van der Jeugt <m@jaspervdj.be>2016-02-01 11:12:59 +0100
commit337983bc827db048263ecc5d77eae824e3d8ca1d (patch)
treec28447d902b4234eccaa5df469cf8bffe2c26e98 /lib/Language/Haskell/Stylish.hs
parent95f27fee0b5abed6052b7675b5b8bd6e77cb092d (diff)
downloadstylish-haskell-337983bc827db048263ecc5d77eae824e3d8ca1d.tar.gz
Fix warnings
Diffstat (limited to 'lib/Language/Haskell/Stylish.hs')
-rw-r--r--lib/Language/Haskell/Stylish.hs92
1 files changed, 92 insertions, 0 deletions
diff --git a/lib/Language/Haskell/Stylish.hs b/lib/Language/Haskell/Stylish.hs
new file mode 100644
index 0000000..103306c
--- /dev/null
+++ b/lib/Language/Haskell/Stylish.hs
@@ -0,0 +1,92 @@
+--------------------------------------------------------------------------------
+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.Monad (foldM)
+
+
+--------------------------------------------------------------------------------
+import Language.Haskell.Stylish.Config
+import Language.Haskell.Stylish.Parse
+import Language.Haskell.Stylish.Step
+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
+import Language.Haskell.Stylish.Verbose
+import Paths_stylish_haskell (version)
+
+
+--------------------------------------------------------------------------------
+imports :: Int -- ^ columns
+ -> Imports.Align
+ -> Step
+imports = Imports.step
+
+
+--------------------------------------------------------------------------------
+languagePragmas :: Int -- ^ columns
+ -> LanguagePragmas.Style
+ -> Bool -- ^ Pad to same length in vertical mode?
+ -> 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