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 an URI
, it is the schema, host, port...
type PathSuffix path Source #
the associated suffix of the given path
in the case of the FilePath
, it is a void (i.e. `()`)
in the case of the URI
, it is a the query, the fragment
(</>) :: 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 "." = "." <> ".." ```
filename :: (Path path, Monoid (PathEnt path)) => path -> PathEnt path Source #
get the filename of the given path
If there is no filename, you will receive the mempty of the PathEnt
prefix :: Path path => path -> PathPrefix path Source #
get the path prefix information
``` prefix "hometab" == () ```
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 "hometab" == () ```
or for URI (TODO, not yet accurate)
``` suffix "http://github.com/vincenthz/hs-foundation?w=1" == URISuffix (["w", "1"], Nothing) ```