hstyle-0.2.0.3: src/HStyle/Rules/TypeSigAlignment.hs
{-# LANGUAGE OverloadedStrings #-}
module HStyle.Rules.TypeSigAlignment
( typeSigAlignmentRule
, typeSigSelector
, typeSigAlignmentChecker
) where
import qualified Language.Haskell.Exts.Annotated as H
import HStyle.Alignment
import HStyle.Block
import HStyle.Checker
import HStyle.Fixer
import HStyle.Rule
import HStyle.Selector
typeSigAlignmentRule :: Rule
typeSigAlignmentRule = Rule typeSigSelector typeSigAlignmentChecker fixNothing
typeSigSelector :: Selector ()
typeSigSelector (md, _) block =
map (\ssi -> ((), fromSrcSpanInfo ssi block)) $ tss md
where
tss (H.Module _ _ _ _ decls) = [ssi | H.TypeSig ssi _ _ <- decls]
tss _ = []
typeSigAlignmentChecker :: Checker ()
typeSigAlignmentChecker () block = case checkAlignmentHead alignment of
Just t -> [(1, t)]
Nothing -> []
where
alignment = alignmentOf ["::", "=>", "->"] $ toLines block