{-# LANGUAGE OverloadedStrings #-}
{-# LANGUAGE TupleSections #-}
-- | Description: A convenient way to work with the files in a filesystem structure.
module System.Filesystem.FileTree (FileTree) where
import Data.ListTrie.Map.Ord (TrieMap)
import System.Filesystem.PathComponent
-- | A representation of the files in a filesystem, ignoring directories.
type FileTree a = TrieMap PathComponent a
-- for debugging purposes only
{-
showTreeWith :: Show a => (FileData -> a) -> FileTree FileData -> String
showTreeWith f t = LT.showTrie (fmap f t) ""
showTree :: FileTree FileData -> String
showTree = showTreeWith go
where
go (fd, exec) =
Prelude.concat ["(", show . BSL.length $ fd, " bytes", if exec then ", *" else "", ")"]
-}