summaryrefslogtreecommitdiffhomepage
path: root/lib
diff options
context:
space:
mode:
authorJasper Van der Jeugt <m@jaspervdj.be>2016-07-23 10:44:25 +0200
committerJasper Van der Jeugt <m@jaspervdj.be>2016-07-23 10:44:25 +0200
commit7d0f24a3e3a01db3e6ff3858518a0fd715380c83 (patch)
tree3dda515c23aa02b0141ee3a7a925c443f39a4662 /lib
parent82943538ba7570dfadd8b3deb501bd67537c57b0 (diff)
downloadstylish-haskell-7d0f24a3e3a01db3e6ff3858518a0fd715380c83.tar.gz
Move records step into simple_align
Diffstat (limited to 'lib')
-rw-r--r--lib/Language/Haskell/Stylish.hs8
-rw-r--r--lib/Language/Haskell/Stylish/Config.hs10
-rw-r--r--lib/Language/Haskell/Stylish/Step/Records.hs41
-rw-r--r--lib/Language/Haskell/Stylish/Step/SimpleAlign.hs27
4 files changed, 27 insertions, 59 deletions
diff --git a/lib/Language/Haskell/Stylish.hs b/lib/Language/Haskell/Stylish.hs
index 2dbf7fc..5b1e918 100644
--- a/lib/Language/Haskell/Stylish.hs
+++ b/lib/Language/Haskell/Stylish.hs
@@ -6,7 +6,6 @@ module Language.Haskell.Stylish
, simpleAlign
, imports
, languagePragmas
- , records
, tabs
, trailingWhitespace
, unicodeSyntax
@@ -35,7 +34,6 @@ 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.SimpleAlign as SimpleAlign
import qualified Language.Haskell.Stylish.Step.Tabs as Tabs
import qualified Language.Haskell.Stylish.Step.TrailingWhitespace as TrailingWhitespace
@@ -68,12 +66,6 @@ languagePragmas = LanguagePragmas.step
--------------------------------------------------------------------------------
-records :: Int -- ^ columns
- -> Step
-records = Records.step
-
-
---------------------------------------------------------------------------------
tabs :: Int -- ^ number of spaces
-> Step
tabs = Tabs.step
diff --git a/lib/Language/Haskell/Stylish/Config.hs b/lib/Language/Haskell/Stylish/Config.hs
index 14f7a04..d14e1be 100644
--- a/lib/Language/Haskell/Stylish/Config.hs
+++ b/lib/Language/Haskell/Stylish/Config.hs
@@ -33,7 +33,6 @@ import qualified System.IO as IO (Newline
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.SimpleAlign as SimpleAlign
import qualified Language.Haskell.Stylish.Step.Tabs as Tabs
import qualified Language.Haskell.Stylish.Step.TrailingWhitespace as TrailingWhitespace
@@ -140,7 +139,6 @@ catalog :: Map String (Config -> A.Object -> A.Parser Step)
catalog = M.fromList
[ ("imports", parseImports)
, ("language_pragmas", parseLanguagePragmas)
- , ("records", parseRecords)
, ("simple_align", parseSimpleAlign)
, ("tabs", parseTabs)
, ("trailing_whitespace", parseTrailingWhitespace)
@@ -173,7 +171,8 @@ parseSimpleAlign c o = SimpleAlign.step
<$> pure (configColumns c)
<*> (SimpleAlign.Config
<$> withDef SimpleAlign.cCases "cases"
- <*> withDef SimpleAlign.cTopLevelPatterns "top_level_patterns")
+ <*> withDef SimpleAlign.cTopLevelPatterns "top_level_patterns"
+ <*> withDef SimpleAlign.cRecords "records")
where
withDef f k = fromMaybe (f SimpleAlign.defaultConfig) <$> (o A..:? k)
@@ -228,11 +227,6 @@ parseLanguagePragmas config o = LanguagePragmas.step
--------------------------------------------------------------------------------
-parseRecords :: Config -> A.Object -> A.Parser Step
-parseRecords c _ = return (Records.step $ configColumns c)
-
-
---------------------------------------------------------------------------------
parseTabs :: Config -> A.Object -> A.Parser Step
parseTabs _ o = Tabs.step
<$> o A..:? "spaces" A..!= 8
diff --git a/lib/Language/Haskell/Stylish/Step/Records.hs b/lib/Language/Haskell/Stylish/Step/Records.hs
deleted file mode 100644
index bbfb895..0000000
--- a/lib/Language/Haskell/Stylish/Step/Records.hs
+++ /dev/null
@@ -1,41 +0,0 @@
---------------------------------------------------------------------------------
-module Language.Haskell.Stylish.Step.Records
- ( step
- ) where
-
-
---------------------------------------------------------------------------------
-import qualified Language.Haskell.Exts.Annotated as H
-
-
---------------------------------------------------------------------------------
-import Language.Haskell.Stylish.Align
-import Language.Haskell.Stylish.Editor
-import Language.Haskell.Stylish.Step
-
-
---------------------------------------------------------------------------------
-records :: H.Module l -> [[Alignable l]]
-records modu =
- [ map fieldDeclToAlignable fields
- | H.Module _ _ _ _ decls <- [modu]
- , H.DataDecl _ _ _ _ cons _ <- decls
- , H.QualConDecl _ _ _ (H.RecDecl _ _ fields) <- cons
- ]
-
-
---------------------------------------------------------------------------------
-fieldDeclToAlignable :: H.FieldDecl a -> Alignable a
-fieldDeclToAlignable (H.FieldDecl ann names ty) = Alignable
- { aContainer = ann
- , aLeft = H.ann (last names)
- , aRight = H.ann ty
- , aRightLead = length ":: "
- }
-
-
---------------------------------------------------------------------------------
-step :: Int -> Step
-step maxColumns = makeStep "Records" $ \ls (module', _) ->
- let module'' = fmap H.srcInfoSpan module' in
- applyChanges (records module'' >>= align maxColumns) ls
diff --git a/lib/Language/Haskell/Stylish/Step/SimpleAlign.hs b/lib/Language/Haskell/Stylish/Step/SimpleAlign.hs
index 68af224..c89e8a1 100644
--- a/lib/Language/Haskell/Stylish/Step/SimpleAlign.hs
+++ b/lib/Language/Haskell/Stylish/Step/SimpleAlign.hs
@@ -23,6 +23,7 @@ import Language.Haskell.Stylish.Util
data Config = Config
{ cCases :: !Bool
, cTopLevelPatterns :: !Bool
+ , cRecords :: !Bool
} deriving (Show)
@@ -31,6 +32,7 @@ defaultConfig :: Config
defaultConfig = Config
{ cCases = True
, cTopLevelPatterns = True
+ , cRecords = True
}
@@ -69,6 +71,26 @@ matchToAlignable (H.Match ann name pats rhs Nothing) = Just $ Alignable
--------------------------------------------------------------------------------
+records :: H.Module l -> [[H.FieldDecl l]]
+records modu =
+ [ fields
+ | H.Module _ _ _ _ decls <- [modu]
+ , H.DataDecl _ _ _ _ cons _ <- decls
+ , H.QualConDecl _ _ _ (H.RecDecl _ _ fields) <- cons
+ ]
+
+
+--------------------------------------------------------------------------------
+fieldDeclToAlignable :: H.FieldDecl a -> Maybe (Alignable a)
+fieldDeclToAlignable (H.FieldDecl ann names ty) = Just $ Alignable
+ { aContainer = ann
+ , aLeft = H.ann (last names)
+ , aRight = H.ann ty
+ , aRightLead = length ":: "
+ }
+
+
+--------------------------------------------------------------------------------
step :: Int -> Config -> Step
step maxColumns config = makeStep "Cases" $ \ls (module', _) ->
let module'' = fmap H.srcInfoSpan module'
@@ -80,7 +102,8 @@ step maxColumns config = makeStep "Cases" $ \ls (module', _) ->
]
configured = concat $
- [changes cases altToAlignable | cCases config] ++
- [changes tlpats matchToAlignable | cTopLevelPatterns config]
+ [changes cases altToAlignable | cCases config] ++
+ [changes tlpats matchToAlignable | cTopLevelPatterns config] ++
+ [changes records fieldDeclToAlignable | cRecords config]
in applyChanges configured ls