Shared: add uriPathToPath.

This adjusts the path from a file: URI in a way that is sensitive
to Windows/Linux differences.  Thus, on Windows,
`/c:/foo` gets interpreted as `c:/foo`, but on Linux,
`/c:/foo` gets interpreted as `/c:/foo`.

See #4613.
This commit is contained in:
John MacFarlane 2018-05-08 09:54:19 -07:00
parent eb3521e4c9
commit 3a291dad35

View file

@ -84,6 +84,7 @@ module Text.Pandoc.Shared (
-- * File handling
inDirectory,
collapseFilePath,
uriPathToPath,
filteredFilesFromArchive,
-- * URI handling
schemes,
@ -635,6 +636,19 @@ collapseFilePath = Posix.joinPath . reverse . foldl go [] . splitDirectories
isSingleton _ = Nothing
checkPathSeperator = fmap isPathSeparator . isSingleton
-- Convert the path part of a file: URI to a regular path.
-- On windows, @/c:/foo@ should be @c:/foo@.
-- On linux, @/foo@ should be @/foo@.
uriPathToPath :: String -> FilePath
uriPathToPath path =
#ifdef _WINDOWS
case path of
'/':ps -> ps
_ -> p
#else
path
#endif
--
-- File selection from the archive
--