From 7d0f24a3e3a01db3e6ff3858518a0fd715380c83 Mon Sep 17 00:00:00 2001 From: Jasper Van der Jeugt Date: Sat, 23 Jul 2016 10:44:25 +0200 Subject: Move records step into simple_align --- lib/Language/Haskell/Stylish.hs | 8 ----- lib/Language/Haskell/Stylish/Config.hs | 10 ++---- lib/Language/Haskell/Stylish/Step/Records.hs | 41 ------------------------ lib/Language/Haskell/Stylish/Step/SimpleAlign.hs | 27 ++++++++++++++-- 4 files changed, 27 insertions(+), 59 deletions(-) delete mode 100644 lib/Language/Haskell/Stylish/Step/Records.hs (limited to 'lib') 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 @@ -67,12 +65,6 @@ languagePragmas :: Int -- ^ columns languagePragmas = LanguagePragmas.step --------------------------------------------------------------------------------- -records :: Int -- ^ columns - -> Step -records = Records.step - - -------------------------------------------------------------------------------- tabs :: Int -- ^ number of spaces -> 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) @@ -227,11 +226,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 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 } @@ -68,6 +70,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', _) -> @@ -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 -- cgit v1.2.3