module Unused.CLI.Views.SearchResult.TableResult
    ( printTable
    ) where

import Control.Monad (forM_)
import Unused.Types
import Unused.CLI.Util
import Unused.CLI.Views.SearchResult.Internal
import Unused.CLI.Views.SearchResult.Types

printTable :: TermResults -> [TermMatch] -> ResultsPrinter ()
printTable r ms = do
    cf <- columnFormat
    let printTerm = cfPrintTerm cf
    let printPath = cfPrintPath cf
    let printNumber = cfPrintNumber cf

    liftIO $ forM_ ms $ \m -> do
        setSGR [SetColor Foreground Dull (termColor r)]
        setSGR [SetConsoleIntensity NormalIntensity]
        putStr $ "     " ++ printTerm (tmTerm m)
        setSGR [Reset]

        setSGR [SetColor Foreground Vivid Cyan]
        setSGR [SetConsoleIntensity NormalIntensity]
        putStr $ "  " ++ printNumber (totalFileCount r) ++ ", " ++ printNumber (totalOccurrenceCount r)
        setSGR [Reset]

        setSGR [SetColor Foreground Dull Cyan]
        setSGR [SetConsoleIntensity FaintIntensity]
        putStr $ "  " ++ printPath (tmPath m)
        setSGR [Reset]

        putStr $ "  " ++ removalReason r
        putStr "\n"