License | BSD-style |
---|---|
Maintainer | foundation |
Stability | experimental |
Portability | portable |
Safe Haskell | None |
Language | Haskell2010 |
Synopsis
-
class
Path
path
where
- type PathEnt path
- type PathPrefix path
- type PathSuffix path
- (</>) :: path -> PathEnt path -> path
- splitPath :: path -> ( PathPrefix path, [ PathEnt path], PathSuffix path)
- buildPath :: ( PathPrefix path, [ PathEnt path], PathSuffix path) -> path
- filename :: ( Path path, Monoid ( PathEnt path)) => path -> PathEnt path
- parent :: Path path => path -> path
- prefix :: Path path => path -> PathPrefix path
- suffix :: Path path => path -> PathSuffix path
- data FilePath
- data FileName
- filePathToString :: FilePath -> String
- filePathToLString :: FilePath -> [ Char ]
Documentation
class Path path where Source #
Path type class
defines the Path associated types and basic functions to implement related to the path manipulation
# TODO, add missing enhancement:
splitExtension :: PathEnt path -> (PathEnt path, PathEnt path) addExtension :: PathEnt path -> PathEnt path -> PathEnt path (.) :: path -> PathEnt path -> path (-.) :: path -> PathEnt path -> path
the associated PathEntity of the given
path
this type is the minimal element contained in the Path
a Path is not a collection but it is possible to see this
associated type equivalent to the
Element
type family
type PathPrefix path Source #
the associated prefix of the given
path
in the case of a
FilePath
, it is a void (i.e.
()
)
in the case of a
URI
, it is the schema, host, port...
type PathSuffix path Source #
(</>) :: path -> PathEnt path -> path Source #
join a path entity to a given path
splitPath :: path -> ( PathPrefix path, [ PathEnt path], PathSuffix path) Source #
split the path into the associated elements
buildPath :: ( PathPrefix path, [ PathEnt path], PathSuffix path) -> path Source #
build the path from the associated elements
Instances
Path FilePath Source # | |
Defined in Foundation.VFS.FilePath |
|
Path URI Source # | |
Defined in Foundation.VFS.URI |
parent :: Path path => path -> path Source #
parent is only going to drop the filename.
if you actually want to reference to the parent directory, simply uses:
parent "." = "." <> ".."
>>>
parent ("foo.hs" :: FilePath)
.
>>>
parent ("foo/bar/baz.hs" :: FilePath)
foo/bar
prefix :: Path path => path -> PathPrefix path Source #
get the path prefix information
>>>
prefix ("/home/tab" :: FilePath)
Absolute
>>>
prefix ("home/tab" :: FilePath)
Relative
or for URI (TODO, not yet accurate)
prefix "http://github.com/vincenthz/hs-foundation?w=1" == URISchema http Nothing Nothing "github.com" Nothing
suffix :: Path path => path -> PathSuffix path Source #
get the path suffix information
>>>
suffix ("/home/tab" :: FilePath)
()
or for URI (TODO, not yet accurate)
suffix "http://github.com/vincenthz/hs-foundation?w=1" == URISuffix (["w", "1"], Nothing)
FilePath
FilePath is a collection of FileName
TODO: Eq and Ord are implemented using Show This is not very efficient and would need to be improved Also, it is possible the ordering is not necessary what we want in this case.
A FilePath is one of the following:
- An Absolute:
- starts with one of the follwing "/"
- A relative:
- don't start with a "/"
- authorised:
- "/"
- " file path"
- "."
- ".."
- "work haskell hs-foundation"
- unauthorised
- "path//"
Instances
Eq FilePath Source # | |
Ord FilePath Source # | |
Defined in Foundation.VFS.FilePath |
|
Show FilePath Source # | |
IsString FilePath Source # | |
Defined in Foundation.VFS.FilePath fromString :: String -> FilePath Source # |
|
Path FilePath Source # | |
Defined in Foundation.VFS.FilePath |
|
type PathEnt FilePath Source # | |
Defined in Foundation.VFS.FilePath |
|
type PathPrefix FilePath Source # | |
Defined in Foundation.VFS.FilePath |
|
type PathSuffix FilePath Source # | |
Defined in Foundation.VFS.FilePath |
A filename (or path entity) in the FilePath
- Authorised
- ""
- "."
- ".."
- "foundation"
- Unauthorised
- "/"
- "file/"
- "/file"
- "file/path"
conversion
filePathToString :: FilePath -> String Source #
filePathToLString :: FilePath -> [ Char ] Source #
conversion of a FilePath into a list of Char
this function may throw exceptions