summaryrefslogtreecommitdiff
path: root/src/Text/Hakyll/Internal/Page.hs
diff options
context:
space:
mode:
authorJasper Van der Jeugt <jaspervdj@gmail.com>2010-03-08 18:44:12 +0100
committerJasper Van der Jeugt <jaspervdj@gmail.com>2010-03-08 18:44:12 +0100
commitd023eb5bf66bd45c1460c9dd331af409d8294763 (patch)
tree0c494592ec5d53ef20aab29f19e9a2b877dddd89 /src/Text/Hakyll/Internal/Page.hs
parent94400da4a09501051a7c4e6c377e55995c708ebd (diff)
downloadhakyll-d023eb5bf66bd45c1460c9dd331af409d8294763.tar.gz
Added Text.Hakyll.Internal.FileType module.
Diffstat (limited to 'src/Text/Hakyll/Internal/Page.hs')
-rw-r--r--src/Text/Hakyll/Internal/Page.hs24
1 files changed, 13 insertions, 11 deletions
diff --git a/src/Text/Hakyll/Internal/Page.hs b/src/Text/Hakyll/Internal/Page.hs
index 657ea77..5168161 100644
--- a/src/Text/Hakyll/Internal/Page.hs
+++ b/src/Text/Hakyll/Internal/Page.hs
@@ -17,6 +17,7 @@ import Text.Hakyll.Hakyll
import Text.Hakyll.Regex (substituteRegex, matchesRegex)
import Text.Hakyll.Util (trim)
import Text.Hakyll.Internal.Cache
+import Text.Hakyll.Internal.FileType
-- | The default reader options for pandoc parsing.
readerOptions :: ParserState
@@ -35,18 +36,19 @@ writerOptions = defaultWriterOptions
}
-- | Get a render function for a given extension.
-getRenderFunction :: String -> (String -> String)
-getRenderFunction ".html" = id
-getRenderFunction ".htm" = id
-getRenderFunction ext = writeHtmlString writerOptions
- . readFunction ext (readOptions ext)
+getRenderFunction :: FileType -> (String -> String)
+getRenderFunction Html = id
+getRenderFunction fileType = writeHtmlString writerOptions
+ . readFunction fileType (readOptions fileType)
where
- readFunction ".rst" = readRST
- readFunction ".tex" = readLaTeX
- readFunction _ = readMarkdown
+ readFunction ReStructuredText = readRST
+ readFunction LaTeX = readLaTeX
+ readFunction Markdown = readMarkdown
+ readFunction t = error $ "Cannot render file " ++ show t
- readOptions ".lhs" = readerOptions { stateLiterateHaskell = True }
- readOptions _ = readerOptions
+ readOptions LiterateHaskellMarkdown =
+ readerOptions { stateLiterateHaskell = True }
+ readOptions _ = readerOptions
-- | Split a page into sections.
splitAtDelimiters :: [String] -> [[String]]
@@ -89,7 +91,7 @@ readSection renderFunction isFirst ls
-- has a @.markdown@ extension, it will be rendered using pandoc.
readPageFromFile :: FilePath -> Hakyll Context
readPageFromFile path = do
- let renderFunction = getRenderFunction $ takeExtension path
+ let renderFunction = getRenderFunction $ getFileType path
sectionFunctions = map (readSection renderFunction)
(True : repeat False)