-- | A module dealing with file extensions and associated file types. module Text.Hakyll.Internal.FileType ( FileType (..) , getFileType , isRenderable , isRenderableFile ) where import System.FilePath (takeExtension) -- | Datatype to represent the different file types Hakyll can deal with. data FileType = Html | LaTeX | LiterateHaskellMarkdown | Markdown | ReStructuredText | Text | UnknownFileType deriving (Eq, Ord, Show, Read) -- | Get the file type for a certain file. The type is determined by extension. getFileType :: FilePath -> FileType getFileType = getFileType' . takeExtension where getFileType' ".htm" = Html getFileType' ".html" = Html getFileType' ".lhs" = LiterateHaskellMarkdown getFileType' ".markdown" = Markdown getFileType' ".md" = Markdown getFileType' ".mdn" = Markdown getFileType' ".mdown" = Markdown getFileType' ".mdwn" = Markdown getFileType' ".mkd" = Markdown getFileType' ".mkdwn" = Markdown getFileType' ".rst" = ReStructuredText getFileType' ".tex" = LaTeX getFileType' ".text" = Text getFileType' ".txt" = Text getFileType' _ = UnknownFileType -- | Check if a certain @FileType@ is renderable. isRenderable :: FileType -> Bool isRenderable UnknownFileType = False isRenderable _ = True -- | Check if a certain file is renderable. isRenderableFile :: FilePath -> Bool isRenderableFile = isRenderable . getFileType