unused-0.5.0.2: src/Unused/Grouping/Internal.hs
module Unused.Grouping.Internal
( groupFilter
) where
import Unused.Grouping.Types
import System.FilePath (takeDirectory, splitDirectories)
import Unused.Types (tmPath, tmTerm)
import Data.List (intercalate)
groupFilter :: CurrentGrouping -> GroupFilter
groupFilter GroupByDirectory = fileNameGrouping
groupFilter GroupByTerm = termGrouping
groupFilter GroupByFile = fileGrouping
groupFilter NoGroup = const NoGrouping
fileNameGrouping :: GroupFilter
fileNameGrouping = ByDirectory . shortenedDirectory . tmPath
termGrouping :: GroupFilter
termGrouping = ByTerm . tmTerm
fileGrouping :: GroupFilter
fileGrouping = ByFile . tmPath
shortenedDirectory :: String -> String
shortenedDirectory =
intercalate "/" . take 2 . splitDirectories . takeDirectory