module Eternity.Foldl.FileNames
where

import Eternity.Prelude hiding (maximum)
import Control.Foldl
import Eternity.Foldl.General
import qualified Eternity.Attoparsec.FileNames as C


nextEventFileName :: Fold FilePath FilePath
nextEventFileName =
  fmap (maybe "1.events" (\ index -> showInt (succ index) ".events")) lastEventFileIndex

lastEventFileIndex :: Fold FilePath (Maybe Int)
lastEventFileIndex =
  onEventFileIndices maximum

onEventFileIndices :: Fold Int a -> Fold FilePath a
onEventFileIndices =
  premap fromString . parsing C.eventsFileName . ignoringLeft