diff options
author | John MacFarlane <jgm@berkeley.edu> | 2014-09-27 16:18:55 -0700 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2014-09-27 16:18:55 -0700 |
commit | 5bab9574f615ef41bc0ae85c161e2a88a55bd86c (patch) | |
tree | 666e1d2612d38f87ba0f6193e3d48b432a9f999b /src/Text/Pandoc/Shared.hs | |
parent | 7b01edce056394c19efc92a3db46562982b5c36c (diff) | |
parent | fa2d11c9548dbbfb7354be29ceb894cc5d3ccdbf (diff) | |
download | pandoc-5bab9574f615ef41bc0ae85c161e2a88a55bd86c.tar.gz |
Merge pull request #1644 from mpickering/master
Fixes and Enhancements from the tracker
Diffstat (limited to 'src/Text/Pandoc/Shared.hs')
-rw-r--r-- | src/Text/Pandoc/Shared.hs | 14 |
1 files changed, 9 insertions, 5 deletions
diff --git a/src/Text/Pandoc/Shared.hs b/src/Text/Pandoc/Shared.hs index 2d7c08718..6e1f84335 100644 --- a/src/Text/Pandoc/Shared.hs +++ b/src/Text/Pandoc/Shared.hs @@ -1,5 +1,6 @@ {-# LANGUAGE DeriveDataTypeable, CPP, MultiParamTypeClasses, - FlexibleContexts, ScopedTypeVariables, PatternGuards #-} + FlexibleContexts, ScopedTypeVariables, PatternGuards, + ViewPatterns #-} {- Copyright (C) 2006-2014 John MacFarlane <jgm@berkeley.edu> @@ -106,7 +107,7 @@ import Network.URI ( escapeURIString, isURI, nonStrictRelativeTo, unEscapeString, parseURIReference, isAllowedInURI ) import qualified Data.Set as Set import System.Directory -import System.FilePath (joinPath, splitDirectories) +import System.FilePath (joinPath, splitDirectories, pathSeparator, isPathSeparator) import Text.Pandoc.MIME (MimeType, getMimeType) import System.FilePath ( (</>), takeExtension, dropExtension) import Data.Generics (Typeable, Data) @@ -871,11 +872,14 @@ collapseFilePath = joinPath . reverse . foldl go [] . splitDirectories go rs "." = rs go r@(p:rs) ".." = case p of ".." -> ("..":r) - "/" -> ("..":r) + (checkPathSeperator -> Just True) -> ("..":r) _ -> rs - go _ "/" = ["/"] + go _ (checkPathSeperator -> Just True) = [[pathSeparator]] go rs x = x:rs - + isSingleton [] = Nothing + isSingleton [x] = Just x + isSingleton _ = Nothing + checkPathSeperator = fmap isPathSeparator . isSingleton -- -- Safe read |