Add rootPath, isRootPath, and getAllComponents{,AfterRoot}
This commit is contained in:
parent
db23ad6b38
commit
7b66379d49
@ -35,6 +35,7 @@ module HPath
|
|||||||
,parseAbs
|
,parseAbs
|
||||||
,parseRel
|
,parseRel
|
||||||
,parseAny
|
,parseAny
|
||||||
|
,rootPath
|
||||||
-- * Path Conversion
|
-- * Path Conversion
|
||||||
,fromAbs
|
,fromAbs
|
||||||
,fromRel
|
,fromRel
|
||||||
@ -45,9 +46,12 @@ module HPath
|
|||||||
,basename
|
,basename
|
||||||
,dirname
|
,dirname
|
||||||
,getAllParents
|
,getAllParents
|
||||||
|
,getAllComponents
|
||||||
|
,getAllComponentsAfterRoot
|
||||||
,stripDir
|
,stripDir
|
||||||
-- * Path Examination
|
-- * Path Examination
|
||||||
,isParentOf
|
,isParentOf
|
||||||
|
,isRootPath
|
||||||
-- * Path IO helpers
|
-- * Path IO helpers
|
||||||
,withAbsPath
|
,withAbsPath
|
||||||
,withRelPath
|
,withRelPath
|
||||||
@ -217,6 +221,10 @@ parseAny filepath = case parseAbs filepath of
|
|||||||
Nothing -> throwM (InvalidRel filepath)
|
Nothing -> throwM (InvalidRel filepath)
|
||||||
|
|
||||||
|
|
||||||
|
rootPath :: Path Abs
|
||||||
|
rootPath = (MkPath (BS.singleton _slash))
|
||||||
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Path Conversion
|
-- Path Conversion
|
||||||
|
|
||||||
@ -307,6 +315,26 @@ getAllParents (MkPath p)
|
|||||||
np = normalise p
|
np = normalise p
|
||||||
|
|
||||||
|
|
||||||
|
-- | Gets all path components.
|
||||||
|
--
|
||||||
|
-- >>> getAllComponents (MkPath "abs/def/dod")
|
||||||
|
-- ["abs","def","dod"]
|
||||||
|
-- >>> getAllComponents (MkPath "abs")
|
||||||
|
-- ["abs"]
|
||||||
|
getAllComponents :: Path Rel -> [Path Rel]
|
||||||
|
getAllComponents (MkPath p) = fmap MkPath . splitDirectories $ p
|
||||||
|
|
||||||
|
|
||||||
|
-- | Gets all path components after the "/" root directory.
|
||||||
|
--
|
||||||
|
-- >>> getAllComponentsAfterRoot (MkPath "/abs/def/dod")
|
||||||
|
-- ["abs","def","dod"]
|
||||||
|
-- >>> getAllComponentsAfterRoot (MkPath "/abs")
|
||||||
|
-- ["abs"]
|
||||||
|
getAllComponentsAfterRoot :: Path Abs -> [Path Rel]
|
||||||
|
getAllComponentsAfterRoot p = getAllComponents (fromJust $ stripDir rootPath p)
|
||||||
|
|
||||||
|
|
||||||
-- | Extract the directory name of a path.
|
-- | Extract the directory name of a path.
|
||||||
--
|
--
|
||||||
-- >>> dirname (MkPath "/abc/def/dod")
|
-- >>> dirname (MkPath "/abc/def/dod")
|
||||||
@ -360,6 +388,18 @@ basename (MkPath l)
|
|||||||
-- False
|
-- False
|
||||||
isParentOf :: Path b -> Path b -> Bool
|
isParentOf :: Path b -> Path b -> Bool
|
||||||
isParentOf p l = isJust (stripDir p l :: Maybe (Path Rel))
|
isParentOf p l = isJust (stripDir p l :: Maybe (Path Rel))
|
||||||
|
|
||||||
|
|
||||||
|
-- | Check whether the given Path is the root "/" path.
|
||||||
|
--
|
||||||
|
-- >>> isRootPath (MkPath "/lal/lad")
|
||||||
|
-- False
|
||||||
|
-- >>> isRootPath (MkPath "/")
|
||||||
|
-- True
|
||||||
|
isRootPath :: Path Abs -> Bool
|
||||||
|
isRootPath = (== rootPath)
|
||||||
|
|
||||||
|
|
||||||
--------------------------------------------------------------------------------
|
--------------------------------------------------------------------------------
|
||||||
-- Path IO helpers
|
-- Path IO helpers
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user