!gUe(      !"#$%&'Safe2 hpathPath of some base and type.FInternally is a ByteString. The ByteString can be of two formats only: !without trailing path separator: file.txt,  foo/bar.txt,  /foo/bar.txtwith trailing path separator: foo/,  /foo/bar/(There are no duplicate path separators //, no .., no ./, no ~/, etc.hpathSame as .The following property holds: x == y "a show x == show yhpathByteString ordering.The following property holds: 'show x `compare` show y "a x `compare` yhpathByteString equality.The following property holds: show x == show y "a x == y+ 2015 2016 FP Complete, 2016 Julian Ospald BSD 3 clause"Julian Ospald <hasufell@posteo.de> experimentalportableNone2gdhpath"Exception when parsing a location. hpathA filename, without any (. hpath$A relative path; one without a root. hpathAn absolute path. hpath@Get a location for an absolute path. Produces a normalised path.Throws: ,parseAbs "/abc" :: Maybe (Path Abs) Just "/abc",parseAbs "/" :: Maybe (Path Abs)Just "/",parseAbs "/abc/def" :: Maybe (Path Abs)Just "/abc/def",parseAbs "/abc/def/.///" :: Maybe (Path Abs)Just "/abc/def/",parseAbs "abc" :: Maybe (Path Abs)Nothing,parseAbs "" :: Maybe (Path Abs)Nothing,parseAbs "/abc/../foo" :: Maybe (Path Abs)Nothinghpath@Get a location for a relative path. Produces a normalised path. Note that filepath may contain any number of ./ but may not consist solely of ./$. It also may not contain a single .. anywhere.Throws:  )parseRel "abc" :: Maybe (Path Rel) Just "abc")parseRel "def/" :: Maybe (Path Rel) Just "def/")parseRel "abc/def" :: Maybe (Path Rel)Just "abc/def")parseRel "abc/def/." :: Maybe (Path Rel)Just "abc/def/")parseRel "/abc" :: Maybe (Path Rel)Nothing)parseRel "" :: Maybe (Path Rel)Nothing)parseRel "abc/../foo" :: Maybe (Path Rel)Nothing)parseRel "." :: Maybe (Path Rel)Nothing)parseRel ".." :: Maybe (Path Rel)NothinghpathAParses a filename. Filenames must not contain slashes. Excludes ) and '..'.Throws:  'parseFn "abc" :: Maybe (Path Fn) Just "abc"'parseFn "..." :: Maybe (Path Fn) Just "..."'parseFn "def/" :: Maybe (Path Fn)Nothing'parseFn "abc/def" :: Maybe (Path Fn)Nothing'parseFn "abc/def/." :: Maybe (Path Fn)Nothing'parseFn "/abc" :: Maybe (Path Fn)Nothing'parseFn "" :: Maybe (Path Fn)Nothing'parseFn "abc/../foo" :: Maybe (Path Fn)Nothing'parseFn "." :: Maybe (Path Fn)Nothing'parseFn ".." :: Maybe (Path Fn)NothinghpathParses a path, whether it's relative or absolute. Will lose information on whether it's relative or absolute. If you need to know, reparse it..Filenames must not contain slashes. Excludes ) and '..'.Throws:  'parseAny "/abc" :: Maybe (Path a) Just "/abc"'parseAny "..." :: Maybe (Path a) Just "..."'parseAny "abc/def" :: Maybe (Path a)Just "abc/def"'parseAny "abc/def/." :: Maybe (Path a)Just "abc/def/"'parseAny "/abc" :: Maybe (Path a) Just "/abc"'parseAny "" :: Maybe (Path a)Nothing'parseAny "abc/../foo" :: Maybe (Path a)Nothing'parseAny "." :: Maybe (Path a)Nothing'parseAny ".." :: Maybe (Path a)Nothinghpath&Convert any Path to a ByteString type.hpath.Convert an absolute Path to a ByteString type.hpath-Convert a relative Path to a ByteString type.hpathAppend two paths.bThe second argument must always be a relative path, which ensures that undefinable things like `"abc" <> "/def"` cannot happen.Technically, the first argument can be a path that points to a non-directory, because this library is IO-agnostic and makes no assumptions about file types.7(MkPath "/") </> (MkPath "file" :: Path Rel)"/file"7(MkPath "/path/to") </> (MkPath "file" :: Path Rel)"/path/to/file"7(MkPath "/") </> (MkPath "file/lal" :: Path Rel) "/file/lal"7(MkPath "/") </> (MkPath "file/" :: Path Rel)"/file/"hpathIStrip directory from path, making it relative to that directory. Throws Couldn'tStripPrefixDir* if directory is not a parent of the path.The bases must match.N(MkPath "/lal/lad") `stripDir` (MkPath "/lal/lad/fad") :: Maybe (Path Rel) Just "fad"N(MkPath "lal/lad") `stripDir` (MkPath "lal/lad/fad") :: Maybe (Path Rel) Just "fad"N(MkPath "/") `stripDir` (MkPath "/") :: Maybe (Path Rel)NothingN(MkPath "/lal/lad/fad") `stripDir` (MkPath "/lal/lad") :: Maybe (Path Rel)NothingN(MkPath "fad") `stripDir` (MkPath "fad") :: Maybe (Path Rel)Nothinghpath>Is p a parent of the given location? Implemented in terms of . The bases must match.<(MkPath "/lal/lad") `isParentOf` (MkPath "/lal/lad/fad")True;(MkPath "lal/lad") `isParentOf` (MkPath "lal/lad/fad")True1(MkPath "/") `isParentOf` (MkPath "/")False8(MkPath "/lal/lad/fad") `isParentOf` (MkPath "/lal/lad")False3(MkPath "fad") `isParentOf` (MkPath "fad")FalsehpathGet all parents of a path.%getAllParents (MkPath "/abs/def/dod")["/abs/def","/abs","/"]getAllParents (MkPath "/")[]hpath%Extract the directory name of a path.dirname (MkPath "/abc/def/dod") "/abc/def"dirname (MkPath "/")"/"hpath Extract the file part of a path.The following properties hold:  basename (p </> a) == basename aThrows:  if given the root path "/"3basename (MkPath "/abc/def/dod") :: Maybe (Path Fn) Just "dod"4basename (MkPath "/abc/def/dod/") :: Maybe (Path Fn) Just "dod"3basename (MkPath "/") :: Maybe (Path Fn)NothinghpathQQuasiquote an absolute Path. This accepts Unicode Chars and will encode as UTF-8.[abs|/etc/profile|] :: Path Abs"/etc/profile"[abs|/|] :: Path Abs"/"[abs|/|] :: Path Abs"/\239\131\144"hpathPQuasiquote a relative Path. This accepts Unicode Chars and will encode as UTF-8.[rel|etc|] :: Path Rel"etc"[rel|bar/baz|] :: Path Rel "bar/baz"[rel||] :: Path Rel"\239\131\144"hpathLQuasiquote a file name. This accepts Unicode Chars and will encode as UTF-8.[fn|etc|] :: Path Fn"etc"[fn||] :: Path Fn"\239\131\144" hpathaQuasiquote any path (relative or absolute). This accepts Unicode Chars and will encode as UTF-8.[any|/etc/profile|] :: Path a"/etc/profile"[any|etc|] :: Path a"etc"[any||] :: Path a"\239\131\144"     *      !"#$%&'()*+,*-./#hpath-0.10.2-EoIMwnez2hGAVu3lzaWV3vHPath.InternalHPath toFilePathPathMkPath $fNFDataPath $fShowPath $fOrdPath$fEqPathRelC PathExceptionPathParseExceptionFnRelAbsparseAbsparseRelparseFnparseAnyfromAbsfromRelstripDir isParentOf getAllParentsdirnamebasename withAbsPath withRelPath withFnPathabsrelfnany $fLiftPath$fExceptionPathParseException$fExceptionPathException$fRelCFn $fRelCRel$fShowPathParseException$fShowPathExceptionbaseGHC.Real/GHC.Base.