hashed-storage-0.3.9: Hashed file storage support code.




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).



newtype Name Source


Name ByteString 


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).

Unsafe functions.

floatPath :: FilePath -> AnchoredPathSource

Take a relative FilePath and turn it into an AnchoredPath. The operation is unsafe and if you break it, you keep both pieces. More useful for exploratory purposes (ghci) than for serious programming.