summaryrefslogtreecommitdiffhomepage
path: root/src/Language/Haskell/Stylish/Config.hs
diff options
context:
space:
mode:
Diffstat (limited to 'src/Language/Haskell/Stylish/Config.hs')
-rw-r--r--src/Language/Haskell/Stylish/Config.hs55
1 files changed, 40 insertions, 15 deletions
diff --git a/src/Language/Haskell/Stylish/Config.hs b/src/Language/Haskell/Stylish/Config.hs
index 0304ae5..271a461 100644
--- a/src/Language/Haskell/Stylish/Config.hs
+++ b/src/Language/Haskell/Stylish/Config.hs
@@ -10,23 +10,25 @@ module Language.Haskell.Stylish.Config
--------------------------------------------------------------------------------
-import Control.Applicative (pure, (<$>), (<*>))
-import Control.Monad (forM, mzero)
-import Data.Aeson (FromJSON (..))
-import qualified Data.Aeson as A
-import qualified Data.Aeson.Types as A
-import qualified Data.ByteString as B
-import Data.List (inits, intercalate)
-import Data.Map (Map)
-import qualified Data.Map as M
-import Data.Yaml (decodeEither)
+import Control.Applicative (pure, (<$>),
+ (<*>))
+import Control.Monad (forM, mzero)
+import Data.Aeson (FromJSON (..))
+import qualified Data.Aeson as A
+import qualified Data.Aeson.Types as A
+import qualified Data.ByteString as B
+import Data.List (inits,
+ intercalate)
+import Data.Map (Map)
+import qualified Data.Map as M
+import Data.Yaml (decodeEither)
import System.Directory
-import System.FilePath (joinPath, splitPath,
- (</>))
+import System.FilePath (joinPath,
+ splitPath,
+ (</>))
--------------------------------------------------------------------------------
-import Paths_stylish_haskell (getDataFileName)
import Language.Haskell.Stylish.Step
import qualified Language.Haskell.Stylish.Step.Imports as Imports
import qualified Language.Haskell.Stylish.Step.LanguagePragmas as LanguagePragmas
@@ -35,6 +37,7 @@ 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 (getDataFileName)
--------------------------------------------------------------------------------
@@ -161,7 +164,14 @@ parseEnum strs _ (Just k) = case lookup k strs of
parseImports :: Config -> A.Object -> A.Parser Step
parseImports config o = Imports.step
<$> pure (configColumns config)
- <*> (o A..:? "align" >>= parseEnum aligns Imports.Global)
+ <*> (Imports.Align
+ <$> (o A..:? "align" >>= parseEnum aligns Imports.Global)
+ <*> (o A..:? "list_align" >>= parseEnum listAligns Imports.AfterAlias)
+ <*> (o A..:? "long_list_align"
+ >>= parseEnum longListAligns Imports.Inline)
+ <*> (maybe 4 (max 1) <$> o A..:? "list_padding")
+ -- ^ Padding have to be at least 1. Default is 4.
+ <*> o A..:? "separate_lists" A..!= True)
where
aligns =
[ ("global", Imports.Global)
@@ -170,18 +180,33 @@ parseImports config o = Imports.step
, ("none", Imports.None)
]
+ listAligns =
+ [ ("new line", Imports.NewLine)
+ , ("with alias", Imports.WithAlias)
+ , ("after alias", Imports.AfterAlias)
+ ]
+
+ longListAligns =
+ [ ("inline", Imports.Inline)
+ , ("new line", Imports.InlineWithBreak)
+ , ("new line-multiline", Imports.InlineToMultiline)
+ , ("multiline", Imports.Multiline)
+ ]
+
--------------------------------------------------------------------------------
parseLanguagePragmas :: Config -> A.Object -> A.Parser Step
parseLanguagePragmas config o = LanguagePragmas.step
<$> pure (configColumns config)
<*> (o A..:? "style" >>= parseEnum styles LanguagePragmas.Vertical)
+ <*> o A..:? "align" A..!= True
<*> o A..:? "remove_redundant" A..!= True
where
styles =
[ ("vertical", LanguagePragmas.Vertical)
, ("compact", LanguagePragmas.Compact)
- , ("compact_line", LanguagePragmas.CompactLine)]
+ , ("compact_line", LanguagePragmas.CompactLine)
+ ]
--------------------------------------------------------------------------------