blob: 689c77f0347aa97bf0d8bc0dcb8aad29aefb2230 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
-- | 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' ".page" = 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
|