packages feed

filepather-0.5: src/System/FilePath/FilePather/Posix.hs

{-# OPTIONS_GHC -Wall #-}
{-# LANGUAGE NoImplicitPrelude #-}

module System.FilePath.FilePather.Posix (
  splitExtension
, takeExtension
, replaceExtension
, dropExtension
, addExtension
, hasExtension
, splitExtensions
, dropExtensions
, takeExtensions
, replaceExtensions
, isExtensionOf
, stripExtension
, splitFileName
, takeFileName
, replaceFileName
, dropFileName
, takeBaseName
, replaceBaseName
, takeDirectory
, replaceDirectory
, combine
, splitPath
, splitDirectories
, splitDrive
, joinDrive
, takeDrive
, hasDrive
, dropDrive
, isDrive
, hasTrailingPathSeparator
, addTrailingPathSeparator
, dropTrailingPathSeparator
, normalise
, equalFilePath
, makeRelative
, isRelative
, isAbsolute
, isValid
, makeValid
, module SFP
) where

import Control.Applicative ( Applicative )
import Control.Category((.))
import Data.String( String )
import Data.Bool( Bool )
import Data.Maybe ( Maybe )
import qualified System.FilePath.Posix as FP
import System.FilePath.Posix as SFP(FilePath)
import System.FilePath.FilePather.ReadFilePath
    ( ReadFilePathT, liftReadFilePath )

splitExtension ::
  Applicative f =>
  ReadFilePathT e f (String, String)
splitExtension =
  liftReadFilePath FP.splitExtension

takeExtension ::
  Applicative f =>
  ReadFilePathT e f String
takeExtension =
  liftReadFilePath FP.takeExtension

replaceExtension ::
  Applicative f =>
  String
  -> ReadFilePathT e f FilePath
replaceExtension =
  liftReadFilePath . FP.replaceExtension

dropExtension ::
  Applicative f =>
  ReadFilePathT e f FilePath
dropExtension =
  liftReadFilePath FP.dropExtensions

addExtension ::
  Applicative f =>
  String
  -> ReadFilePathT e f FilePath
addExtension =
  liftReadFilePath . FP.addExtension

hasExtension ::
  Applicative f =>
  ReadFilePathT e f Bool
hasExtension =
  liftReadFilePath FP.hasExtension

splitExtensions ::
  Applicative f =>
  ReadFilePathT e f (FilePath, String)
splitExtensions =
  liftReadFilePath FP.splitExtensions

dropExtensions ::
  Applicative f =>
  ReadFilePathT e f FilePath
dropExtensions =
  liftReadFilePath FP.dropExtensions

takeExtensions ::
  Applicative f =>
  ReadFilePathT e f String
takeExtensions =
  liftReadFilePath FP.takeExtensions

replaceExtensions ::
  Applicative f =>
  String
  -> ReadFilePathT e f FilePath
replaceExtensions =
  liftReadFilePath . FP.replaceExtensions

isExtensionOf ::
  Applicative f =>
  String
  -> ReadFilePathT e f Bool
isExtensionOf =
  liftReadFilePath . FP.isExtensionOf

stripExtension ::
  Applicative f =>
  String
  -> ReadFilePathT e f (Maybe FilePath)
stripExtension =
  liftReadFilePath . FP.stripExtension

splitFileName ::
  Applicative f =>
  ReadFilePathT e f (String, String)
splitFileName =
  liftReadFilePath FP.splitFileName

takeFileName ::
  Applicative f =>
  ReadFilePathT e f String
takeFileName =
  liftReadFilePath FP.takeFileName

replaceFileName ::
  Applicative f =>
  String
  -> ReadFilePathT e f FilePath
replaceFileName =
  liftReadFilePath . FP.replaceFileName

dropFileName ::
  Applicative f =>
  ReadFilePathT e f FilePath
dropFileName =
  liftReadFilePath FP.dropFileName

takeBaseName ::
  Applicative f =>
  ReadFilePathT e f String
takeBaseName =
  liftReadFilePath FP.takeBaseName

replaceBaseName ::
  Applicative f =>
  String ->
  ReadFilePathT e f FilePath
replaceBaseName =
  liftReadFilePath . FP.replaceBaseName

takeDirectory ::
  Applicative f =>
  ReadFilePathT e f FilePath
takeDirectory =
  liftReadFilePath FP.takeDirectory

replaceDirectory ::
  Applicative f =>
  String ->
  ReadFilePathT e f FilePath
replaceDirectory =
  liftReadFilePath . FP.replaceDirectory

combine ::
  Applicative f =>
  FilePath
  ->  ReadFilePathT e f FilePath
combine =
  liftReadFilePath . FP.combine

splitPath ::
  Applicative f =>
  ReadFilePathT e f [FilePath]
splitPath =
  liftReadFilePath FP.splitPath

splitDirectories ::
  Applicative f =>
  ReadFilePathT e f [FilePath]
splitDirectories =
  liftReadFilePath FP.splitDirectories

splitDrive ::
  Applicative f =>
  ReadFilePathT e f (FilePath, FilePath)
splitDrive =
  liftReadFilePath FP.splitDrive

joinDrive ::
  Applicative f =>
  FilePath
  -> ReadFilePathT e f FilePath
joinDrive =
  liftReadFilePath . FP.joinDrive

takeDrive ::
  Applicative f =>
  ReadFilePathT e f FilePath
takeDrive =
  liftReadFilePath FP.takeDrive

hasDrive ::
  Applicative f =>
  ReadFilePathT e f Bool
hasDrive =
  liftReadFilePath FP.hasDrive

dropDrive ::
  Applicative f =>
  ReadFilePathT e f FilePath
dropDrive =
  liftReadFilePath FP.dropDrive

isDrive ::
  Applicative f =>
  ReadFilePathT e f Bool
isDrive =
  liftReadFilePath FP.isDrive

hasTrailingPathSeparator ::
  Applicative f =>
  ReadFilePathT e f Bool
hasTrailingPathSeparator =
  liftReadFilePath FP.hasTrailingPathSeparator

addTrailingPathSeparator ::
  Applicative f =>
  ReadFilePathT e f FilePath
addTrailingPathSeparator =
  liftReadFilePath FP.addTrailingPathSeparator

dropTrailingPathSeparator ::
  Applicative f =>
  ReadFilePathT e f FilePath
dropTrailingPathSeparator =
  liftReadFilePath FP.dropTrailingPathSeparator

normalise ::
  Applicative f =>
  ReadFilePathT e f FilePath
normalise =
  liftReadFilePath FP.normalise

equalFilePath ::
  Applicative f =>
  FilePath
  -> ReadFilePathT e f Bool
equalFilePath =
  liftReadFilePath . FP.equalFilePath

makeRelative ::
  Applicative f =>
  FilePath
  -> ReadFilePathT e f FilePath
makeRelative =
  liftReadFilePath . FP.makeRelative

isRelative ::
  Applicative f =>
  ReadFilePathT e f Bool
isRelative =
  liftReadFilePath FP.isRelative

isAbsolute ::
  Applicative f =>
  ReadFilePathT e f Bool
isAbsolute =
  liftReadFilePath FP.isAbsolute

isValid ::
  Applicative f =>
  ReadFilePathT e f Bool
isValid =
  liftReadFilePath FP.isValid

makeValid ::
  Applicative f =>
  ReadFilePathT e f FilePath
makeValid =
  liftReadFilePath FP.makeValid