on 487d91c help sign in
48 lines 1.6 kB history raw
1-- | A module dealing with file extensions and associated file types.
2module Text.Hakyll.Internal.FileType
3 ( FileType (..)
4 , getFileType
5 , isRenderable
6 , isRenderableFile
7 ) where
9import System.FilePath (takeExtension)
11-- | Datatype to represent the different file types Hakyll can deal with.
12data FileType = Html
13 | LaTeX
14 | LiterateHaskellMarkdown
15 | Markdown
16 | ReStructuredText
17 | Text
18 | UnknownFileType
19 deriving (Eq, Ord, Show, Read)
21-- | Get the file type for a certain file. The type is determined by extension.
22getFileType :: FilePath -> FileType
23getFileType = getFileType' . takeExtension
24 where
25 getFileType' ".htm" = Html
26 getFileType' ".html" = Html
27 getFileType' ".lhs" = LiterateHaskellMarkdown
28 getFileType' ".markdown" = Markdown
29 getFileType' ".md" = Markdown
30 getFileType' ".mdn" = Markdown
31 getFileType' ".mdown" = Markdown
32 getFileType' ".mdwn" = Markdown
33 getFileType' ".mkd" = Markdown
34 getFileType' ".mkdwn" = Markdown
35 getFileType' ".rst" = ReStructuredText
36 getFileType' ".tex" = LaTeX
37 getFileType' ".text" = Text
38 getFileType' ".txt" = Text
39 getFileType' _ = UnknownFileType
41-- | Check if a certain @FileType@ is renderable.
42isRenderable :: FileType -> Bool
43isRenderable UnknownFileType = False
44isRenderable _ = True
46-- | Check if a certain file is renderable.
47isRenderableFile :: FilePath -> Bool
48isRenderableFile = isRenderable . getFileType