todos-0.3: Todos/ConfigUtils.hs
{-# LANGUAGE UnicodeSyntax, MultiParamTypeClasses #-}
-- | This module contains some empty configs definitions and some function fields of defaultConfig
module Todos.ConfigUtils where
import System.Console.ANSI
import Todos.Types
import Todos.Config
import Todos.Color
import Todos.Shapes
import Todos.CmdLine
import Todos.Print
import Todos.Tree
-- | Empty BaseConfig
emptyBaseConfig ∷ BaseConfig
emptyBaseConfig = BConfig {
outOnlyFirst = False,
outColors = False,
outIds = False,
outHighlight = False,
sorting = DoNotSort,
pruneL = Limit 20,
minL = Limit 0,
commandToRun = JustShow,
prefix = Nothing,
descrFormat = "%d",
skipStatus = False,
groupByFile = False,
groupByTag = False,
groupByStatus = False,
forcedStatus = Nothing,
topStatus = Nothing
}
-- | Default empty DefaultConfig (nullConfig field of defaultConfig)
emptyConfig ∷ DefaultConfig
emptyConfig = DConfig {
baseConfig = emptyBaseConfig,
query = Empty }
-- | Default Todos config
defaultConfig ∷ TodosConfig DefaultConfig
defaultConfig = Todos {
parseCommandLine = parseCmdLine,
filterTodos = defaultTodosFilter,
statusConsoleColor = statusColor,
itemConsoleColor = defItemConsoleColor,
highlightColor = (Vivid, Magenta),
itemColor = getColor,
itemShape = getShape,
printTodos = defaultPrintTodos,
nullConfig = emptyConfig
}
-- | Make a list transformer
composeAll ∷ DateTime → DefaultConfig → (Todo → [Todo])
composeAll date conf =
let pred = compose date $ query conf
bc = baseConfig conf
in pruneSelector bc pred
-- | Default filter for TODOs (filterTodos field of defaultConfig)
defaultTodosFilter ∷ DateTime → DefaultConfig → [Todo] → [Todo]
defaultTodosFilter dt conf todos =
let t = delTag "-" todos
bc = baseConfig conf
in if outHighlight bc
then t
else concatMap (composeAll dt conf) t
-- | Parse command line (default function)
parseCmdLine ∷ DateTime -- ^ Current date/time
→ DefaultConfig -- ^ Default config
→ [String] -- ^ Command line args
→ CmdLineParseResult DefaultConfig
parseCmdLine currDate dc args =
case parseCmdLine' currDate args of
Right (opts, files) → case opts of
Help → CmdLineHelp
_ → Parsed (buildQuery (baseConfig dc) opts) files
Left str → ParseError str
-- | Prepare PrintConfig for console output functions. Is called from realTodos.
mkPrintConfig ∷ (RuntimeConfig c) ⇒ DateTime → c → TodosConfig c → PrintConfig c
mkPrintConfig dt conf tcfg = PConfig {
printConfig = conf,
printStatusColor = statusConsoleColor tcfg,
printItemColor = itemConsoleColor tcfg,
printHighlightColor = highlightColor tcfg,
doHighlight = getPredicate dt conf }