hstyle-0.2.0.3: src/HStyle/Rules/Tabs.hs
-- | Check for tabs in files
{-# LANGUAGE OverloadedStrings #-}
module HStyle.Rules.Tabs
( tabsRule
, tabsChecker
, tabsFixer
) where
import qualified Data.Text as T
import HStyle.Checker
import HStyle.Fixer
import HStyle.Rule
import HStyle.Selector
tabsRule :: Int -> Rule
tabsRule i = Rule selectLines tabsChecker (tabsFixer i)
tabsChecker :: Checker ()
tabsChecker = checkLines $ \() line -> case T.findIndex (== '\t') line of
Nothing -> Nothing
Just i -> Just $ "\\t at column " `T.append` T.pack (show $ i + 1)
tabsFixer :: Int -> Fixer ()
tabsFixer numSpaces = fixLines fixer
where
spaces = T.replicate numSpaces " "
fixer () = T.intercalate spaces . T.split (== '\t')