-- Hoogle documentation, generated by Haddock -- See Hoogle, http://www.haskell.org/hoogle/ -- | Support for well-typed paths -- -- Support for well-typed paths. @package path @version 0.5.11 -- | Internal types and functions. module Path.Internal -- | Path of some base and type. -- -- Internally is a string. The string can be of two formats only: -- --
-- $(mkAbsDir x) </> $(mkRelDir y) = $(mkAbsDir (x ++ "/" ++ y)) ---- --
-- $(mkAbsDir x) </> $(mkRelFile y) = $(mkAbsFile (x ++ "/" ++ y)) ---- --
-- $(mkRelDir x) </> $(mkRelDir y) = $(mkRelDir (x ++ "/" ++ y)) ---- --
-- $(mkRelDir x) </> $(mkRelFile y) = $(mkRelFile (x ++ "/" ++ y)) ---- -- The following are proven not possible to express: -- --
-- $(mkAbsFile …) </> x ---- --
-- $(mkRelFile …) </> x ---- --
-- x </> $(mkAbsFile …) ---- --
-- x </> $(mkAbsDir …) --(>) :: Path b Dir -> Path Rel t -> Path b t -- | Strip directory from path, making it relative to that directory. -- Throws Couldn'tStripPrefixDir if directory is not a parent of -- the path. -- -- The following properties hold: -- --
-- stripDir x (x </> y) = y ---- -- Cases which are proven not possible: -- --
-- stripDir (a :: Path Abs …) (b :: Path Rel …) ---- --
-- stripDir (a :: Path Rel …) (b :: Path Abs …) ---- -- In other words the bases must match. stripDir :: MonadThrow m => Path b Dir -> Path b t -> m (Path Rel t) -- | Is p a parent of the given location? Implemented in terms of -- stripDir. The bases must match. -- -- The following properties hold: -- --
-- not (x isParentOf x) ---- --
-- x isParentOf (x </> y) --isParentOf :: Path b Dir -> Path b t -> Bool -- | Take the absolute parent directory from the absolute path. -- -- The following properties hold: -- --
-- parent (x </> y) == x ---- -- On the root, getting the parent is idempotent: -- --
-- parent (parent "/") = "/" --parent :: Path Abs t -> Path Abs Dir -- | Extract the file part of a path. -- -- The following properties hold: -- --
-- filename (p </> a) == filename a --filename :: Path b File -> Path Rel File -- | Extract the last directory name of a path. -- -- The following properties hold: -- --
-- dirname (p </> a) == dirname a --dirname :: Path b Dir -> Path Rel Dir -- | Get extension from given file path. fileExtension :: Path b File -> String -- | Replace/add extension to given file path. Throws if the resulting -- filename does not parse. setFileExtension :: MonadThrow m => String -> Path b File -> m (Path b File) -- | Convert to a FilePath type. -- -- All directories have a trailing slash, so if you want no trailing -- slash, you can use dropTrailingPathSeparator from the filepath -- package. toFilePath :: Path b t -> FilePath -- | Convert absolute path to directory to FilePath type. fromAbsDir :: Path Abs Dir -> FilePath -- | Convert relative path to directory to FilePath type. fromRelDir :: Path Rel Dir -> FilePath -- | Convert absolute path to file to FilePath type. fromAbsFile :: Path Abs File -> FilePath -- | Convert relative path to file to FilePath type. fromRelFile :: Path Rel File -> FilePath instance GHC.Show.Show Path.PathParseException instance Data.Aeson.Types.FromJSON.FromJSON (Path.Internal.Path Path.Abs Path.File) instance Data.Aeson.Types.FromJSON.FromJSON (Path.Internal.Path Path.Rel Path.File) instance Data.Aeson.Types.FromJSON.FromJSON (Path.Internal.Path Path.Abs Path.Dir) instance Data.Aeson.Types.FromJSON.FromJSON (Path.Internal.Path Path.Rel Path.Dir) instance GHC.Exception.Exception Path.PathParseException