about summary refs log tree commit diff
path: root/haskell-file/f.hs
diff options
context:
space:
mode:
Diffstat (limited to 'haskell-file/f.hs')
-rw-r--r--haskell-file/f.hs17
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
 --------------------------------------------------------------------------------