diff options
author | William Carroll <wpcarro@gmail.com> | 2020-01-18T17·05+0000 |
---|---|---|
committer | William Carroll <wpcarro@gmail.com> | 2020-01-18T17·05+0000 |
commit | bb0de3dec2a610a3789c0fd02dd9e018e239b487 (patch) | |
tree | eb5d3e83f5ccb61e8f6aba061d583ccacd861ff8 /haskell-file/f.hs | |
parent | 34dc3e05c8a42c47023776d52ff33f100f2d310f (diff) |
Begin tests for Haskell File module
Cameron sent over some property tests for his File.split function, which is a part of a larger effort to port f.el, a nice library for working with file paths, over to Haskell.
Diffstat (limited to 'haskell-file/f.hs')
-rw-r--r-- | haskell-file/f.hs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/haskell-file/f.hs b/haskell-file/f.hs index 9ddb930ee103..295575f3f48d 100644 --- a/haskell-file/f.hs +++ b/haskell-file/f.hs @@ -1,7 +1,14 @@ module F ( join + , split ) where +-------------------------------------------------------------------------------- +-- Dependencies +-------------------------------------------------------------------------------- + +import Data.List (span) +import System.FilePath (FilePath, pathSeparator) import System.FilePath.Posix (FilePath) import qualified System.FilePath.Posix as F @@ -25,6 +32,16 @@ simpleAssert x y = join :: [FilePath] -> FilePath join = F.joinPath +-- | Split path and return list containing parts. +split :: FilePath -> [String] +split = splitJoin . span (/= pathSeparator) + where + splitJoin :: (String, String) -> [String] + splitJoin ([], []) = [] + splitJoin (a, []) = [a] + splitJoin (a, [_]) = [a] + splitJoin (a, _:b) = a : split b + -------------------------------------------------------------------------------- -- Tests -------------------------------------------------------------------------------- |