úÎ?J<ß%      !"#$None0Path of some base and type.>Internally is a string. The string can be of two formats only:  File format: file.txt,  foo/bar.txt,  /foo/bar.txtDirectory format: foo/,  /foo/bar/UAll directories end in a trailing separator. There are no duplicate path separators //, no .., no ./, no ~/, etc.Same as .The following property holds: x == y "a show x == show yString ordering.The following property holds: 'show x `compare` show y "a x `compare` yString equality.The following property holds: show x == show y "a x == y© 2015 2016 FP Complete BSD 3 clause%Chris Done <chrisdone@fpcomplete.com> experimentalportableNone09;C"Exception when parsing a location.A directory path.  A file path. $A relative path; one without a root. An absolute path. mGet a location for an absolute directory. Produces a normalized path which always ends in a path separator.Throws:  kGet a location for a relative directory. Produces a normalized path which always ends in a path separator. Note that filepath may contain any number of ./ but may not consist solely of ./$. It also may not contain a single .. anywhere.Throws: $Get a location for an absolute file.Throws: #Get a location for a relative file. Note that filepath may contain any number of ./ but may not contain a single .. anywhere.Throws: %–Helper function: check if the filepath has any parent directories in it. This handles the logic of checking for different path separators on Windows.Make a 'Path Abs Dir'.9Remember: due to the nature of absolute paths this (e.g.  /home/fooW) may compile on your platform, but it may not compile on another platform (Windows).Make a 'Path Rel Dir'.Make a 'Path Abs File'.9Remember: due to the nature of absolute paths this (e.g.  /home/fooW) may compile on your platform, but it may not compile on another platform (Windows).Make a 'Path Rel File'. Convert to a & type.VAll directories have a trailing slash, so if you want no trailing slash, you can use  from the filepath package.&Convert absolute path to directory to & type.&Convert relative path to directory to & type.!Convert absolute path to file to & type.!Convert relative path to file to & type.Append two paths.6The following cases are valid and the equalities hold: =$(mkAbsDir x) </> $(mkRelDir y) = $(mkAbsDir (x ++ "/" ++ y)) ?$(mkAbsDir x) </> $(mkRelFile y) = $(mkAbsFile (x ++ "/" ++ y)) =$(mkRelDir x) </> $(mkRelDir y) = $(mkRelDir (x ++ "/" ++ y)) ?$(mkRelDir x) </> $(mkRelFile y) = $(mkRelFile (x ++ "/" ++ y))1The following are proven not possible to express: $(mkAbsFile &) </> x $(mkRelFile &) </> x x </> $(mkAbsFile &) x </> $(mkAbsDir &)IStrip directory from path, making it relative to that directory. Throws '* if directory is not a parent of the path.The following properties hold: stripDir x (x </> y) = y$Cases which are proven not possible: ,stripDir (a :: Path Abs &) (b :: Path Rel &) ,stripDir (a :: Path Rel &) (b :: Path Abs &)$In other words the bases must match.>Is p a parent of the given location? Implemented in terms of . The bases must match.:Take the absolute parent directory from the absolute path.The following properties hold: parent (x </> y) == x.On the root, getting the parent is idempotent: parent (parent "/") = "/" Extract the file part of a path.The following properties hold:  filename (p </> a) == filename a*Extract the last directory name of a path.The following properties hold: dirname (p </> a) == dirname a()Internal use for normalizing a directory.)*Internal use for normalizing a fileectory.&*+,-' . %() !"#   !*+,-' . %() !"#/      !"#$%&'()*+,-./01234!path-0.5.8-FbuSfjPO81m6X82ILstBCk Path.InternalPath toFilePathSystem.FilePathdropTrailingPathSeparator $fToJSONPath $fNFDataPath $fShowPath $fOrdPath$fEqPathPathParseExceptionDirFileRelAbs parseAbsDir parseRelDir parseAbsFile parseRelFilemkAbsDirmkRelDir mkAbsFile mkRelFile fromAbsDir fromRelDir fromAbsFile fromRelFilestripDir isParentOfparentfilenamedirname$fExceptionPathParseException$fFromJSONPath$fFromJSONPath0$fFromJSONPath1$fFromJSONPath2$fShowPathParseException hasParentDirbaseGHC.IOFilePathCouldn'tStripPrefixDir normalizeDir normalizeFile InvalidAbsDir InvalidRelDirInvalidAbsFileInvalidRelFile parseJSONWith