]> git.wincent.com - docvim.git/blob - lib/Text/Docvim/ReadDir.hs
Add additional blank line above headings
[docvim.git] / lib / Text / Docvim / ReadDir.hs
1 -- | Recursively read the paths in a directory.
2 --
3 -- Based on `RecursiveContents` example in chapter 9 of "Real World Haskell".
4 module Text.Docvim.ReadDir (readDir) where
5
6 import Control.Monad
7 import System.Directory
8 import System.FilePath
9
10 readDir :: FilePath -> IO [FilePath]
11 readDir dir = do
12   names <- getDirectoryContents dir
13   let properNames = filter (`notElem` [".", ".."]) names
14   paths <- forM properNames $ \name -> do
15     let path = dir </> name
16     isDirectory <- doesDirectoryExist path
17     if isDirectory
18       then readDir path
19       else return [path]
20   return (concat paths)