--------------------------------------------------------------------------------
module Language.Haskell.Stylish.Step.Tabs
    ( step
    ) where


--------------------------------------------------------------------------------
import           Language.Haskell.Stylish.Step


--------------------------------------------------------------------------------
removeTabs :: Int -> String -> String
removeTabs :: Int -> String -> String
removeTabs Int
spaces = (Char -> String) -> String -> String
forall (t :: * -> *) a b. Foldable t => (a -> [b]) -> t a -> [b]
concatMap Char -> String
removeTabs'
  where
    removeTabs' :: Char -> String
removeTabs' Char
'\t' = Int -> Char -> String
forall a. Int -> a -> [a]
replicate Int
spaces Char
' '
    removeTabs' Char
x    = [Char
x]


--------------------------------------------------------------------------------
step :: Int -> Step
step :: Int -> Step
step Int
spaces = String -> (Lines -> Module -> Lines) -> Step
makeStep String
"Tabs" ((Lines -> Module -> Lines) -> Step)
-> (Lines -> Module -> Lines) -> Step
forall a b. (a -> b) -> a -> b
$ \Lines
ls Module
_ -> (String -> String) -> Lines -> Lines
forall a b. (a -> b) -> [a] -> [b]
map (Int -> String -> String
removeTabs Int
spaces) Lines
ls