module Unused.Grouping.Internal
    ( groupFilter
    ) where

import qualified Data.List as L
import qualified System.FilePath as FP
import           Unused.Grouping.Types (CurrentGrouping(..), Grouping(..), GroupFilter)
import qualified Unused.Types as T

groupFilter :: CurrentGrouping -> GroupFilter
groupFilter GroupByDirectory = ByDirectory . shortenedDirectory . T.tmPath
groupFilter GroupByTerm = ByTerm . T.tmTerm
groupFilter GroupByFile = ByFile . T.tmPath
groupFilter NoGroup = const NoGrouping

shortenedDirectory :: String -> String
shortenedDirectory =
    L.intercalate "/" . take 2 . FP.splitDirectories . FP.takeDirectory