License | BSD-style |
---|---|
Maintainer | foundation |
Stability | experimental |
Portability | portable |
Safe Haskell | None |
Language | Haskell2010 |
- class Path path where
- type PathEnt path
- type PathPrefix path
- type PathSuffix path
- parent :: Path path => path -> path
- filename :: (Path path, Monoid (PathEnt path)) => path -> PathEnt path
- prefix :: Path path => path -> PathPrefix path
- suffix :: Path path => path -> PathSuffix path
Path class
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
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)