docvim-0.3.0.0: lib/Text/Docvim/ReadDir.hs
-- | Recursively read the paths in a directory.
--
-- Based on `RecursiveContents` example in chapter 9 of "Real World Haskell".
module Text.Docvim.ReadDir (readDir) where
import Control.Monad
import System.Directory
import System.FilePath
readDir :: FilePath -> IO [FilePath]
readDir dir = do
names <- getDirectoryContents dir
let properNames = filter (`notElem` [".", ".."]) names
paths <- forM properNames $ \name -> do
let path = dir </> name
isDirectory <- doesDirectoryExist path
if isDirectory
then readDir path
else return [path]
return (concat paths)