hashed-storage-0.4.13: Hashed file storage support code.Source codeContentsIndex
Storage.Hashed.AnchoredPath
Contents
Unsafe functions.
Description
This module implements relative paths within a Tree. All paths are anchored at a certain root (this is usually the Tree root). They are represented by a list of Names (these are just strict bytestrings).
Synopsis
newtype Name = Name ByteString
newtype AnchoredPath = AnchoredPath [Name]
anchoredRoot :: AnchoredPath
appendPath :: AnchoredPath -> Name -> AnchoredPath
anchorPath :: FilePath -> AnchoredPath -> FilePath
isPrefix :: AnchoredPath -> AnchoredPath -> Bool
parent :: AnchoredPath -> AnchoredPath
parents :: AnchoredPath -> [AnchoredPath]
catPaths :: AnchoredPath -> AnchoredPath -> AnchoredPath
flatten :: AnchoredPath -> ByteString
makeName :: String -> Name
floatBS :: ByteString -> AnchoredPath
floatPath :: FilePath -> AnchoredPath
Documentation
newtype Name Source
Constructors
Name ByteString
newtype AnchoredPath Source
This is a type of sane file paths. These are always canonic in the sense that there are no stray slashes, no .. components and similar. They are usually used to refer to a location within a Tree, but a relative filesystem path works just as well. These are either constructed from individual name components (using appendPath, catPaths and makeName), or converted from a FilePath (floatPath -- but take care when doing that) or .
Constructors
AnchoredPath [Name]
anchoredRoot :: AnchoredPathSource
appendPath :: AnchoredPath -> Name -> AnchoredPathSource
Append an element to the end of a path.
anchorPath :: FilePath -> AnchoredPath -> FilePathSource
Take a root directory and an anchored path and produce a full FilePath. Moreover, you can use anchorPath "" to get a relative FilePath.
isPrefix :: AnchoredPath -> AnchoredPath -> BoolSource
Check whether a path is a prefix of another path.
parent :: AnchoredPath -> AnchoredPathSource
Get parent (path) of a given path. foobarbaz -> foo/bar
parents :: AnchoredPath -> [AnchoredPath]Source
List all parents of a given path. foobarbaz -> [foo, foo/bar]
catPaths :: AnchoredPath -> AnchoredPath -> AnchoredPathSource
Catenate two paths together. Not very safe, but sometimes useful (e.g. when you are representing paths relative to a different point than a Tree root).
flatten :: AnchoredPath -> ByteStringSource
makeName :: String -> NameSource
Unsafe functions.
floatBS :: ByteString -> AnchoredPathSource
Unsafe. Only ever use on bytestrings that came from flatten on a pre-existing AnchoredPath.
floatPath :: FilePath -> AnchoredPathSource
Take a relative FilePath and turn it into an AnchoredPath. The operation is (relatively) unsafe. Basically, by using floatPath, you are testifying that the argument is a path relative to some common root -- i.e. the root of the associated Tree object. Also, there are certain invariants about AnchoredPath that this function tries hard to preserve, but probably cannot guarantee (i.e. this is a best-effort thing). You should sanitize any FilePaths before you declare them good by converting into AnchoredPath (using this function).
Produced by Haddock version 2.6.0