hsdev-0.2.1.0: src/System/Directory/Paths.hs
{-# LANGUAGE TypeSynonymInstances, FlexibleInstances #-}
module System.Directory.Paths (
Paths(..),
canonicalize,
absolutise,
relativise
) where
import Control.Lens
import System.Directory
import System.FilePath
-- | Something with paths inside
class Paths a where
paths :: Traversal' a FilePath
instance Paths FilePath where
paths = id
-- | Canonicalize all paths
canonicalize :: Paths a => a -> IO a
canonicalize = paths canonicalizePath
-- | Absolutise paths
absolutise :: Paths a => FilePath -> a -> a
absolutise parent = over paths (parent </>)
-- | Relativise paths
relativise :: Paths a => FilePath -> a -> a
relativise parent = over paths (makeRelative parent)