{-# LANGUAGE CPP #-}

module Path.Extended
 ( fileExtension
 , addExtension
 , replaceExtension
 ) where

import           Control.Monad.Catch
import qualified Path
import           Path (Path, File)

fileExtension :: MonadThrow m => Path b File -> m String
fileExtension =
#if MIN_VERSION_path(0,7,0)
    Path.fileExtension
#else
    pure . Path.fileExtension
#endif

addExtension :: MonadThrow m
  => String
  -> Path b File
  -> m (Path b File)
addExtension =
#if MIN_VERSION_path(0,7,0)
    Path.addExtension
#else
    Path.addFileExtension
#endif

replaceExtension :: MonadThrow m
  => String
  -> Path b File
  -> m (Path b File)
#if MIN_VERSION_path(0,7,0)
replaceExtension ext = Path.replaceExtension ('.' : ext)
#else
replaceExtension = flip (Path.-<.>)
#endif