diff options
author | Jasper Van der Jeugt <jaspervdj@gmail.com> | 2010-03-08 18:44:12 +0100 |
---|---|---|
committer | Jasper Van der Jeugt <jaspervdj@gmail.com> | 2010-03-08 18:44:12 +0100 |
commit | d023eb5bf66bd45c1460c9dd331af409d8294763 (patch) | |
tree | 0c494592ec5d53ef20aab29f19e9a2b877dddd89 /src/Text/Hakyll/Internal/Page.hs | |
parent | 94400da4a09501051a7c4e6c377e55995c708ebd (diff) | |
download | hakyll-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.hs | 24 |
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) |