summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Hakyll/Web/Pandoc/FileType.hs10
-rw-r--r--tests/Hakyll/Web/Pandoc/FileType/Tests.hs26
-rw-r--r--tests/TestSuite.hs2
3 files changed, 35 insertions, 3 deletions
diff --git a/src/Hakyll/Web/Pandoc/FileType.hs b/src/Hakyll/Web/Pandoc/FileType.hs
index 28698a7..46c8e24 100644
--- a/src/Hakyll/Web/Pandoc/FileType.hs
+++ b/src/Hakyll/Web/Pandoc/FileType.hs
@@ -8,7 +8,7 @@ module Hakyll.Web.Pandoc.FileType
--------------------------------------------------------------------------------
-import System.FilePath (takeExtension)
+import System.FilePath (splitExtension)
--------------------------------------------------------------------------------
@@ -36,12 +36,16 @@ data FileType
--------------------------------------------------------------------------------
-- | Get the file type for a certain file. The type is determined by extension.
fileType :: FilePath -> FileType
-fileType = uncurry fileType' . splitExtension
+fileType = uncurry fileType' . splitExtension
where
fileType' _ ".css" = Css
fileType' _ ".htm" = Html
fileType' _ ".html" = Html
- fileType' f ".lhs" = LiterateHaskell (fileType' (takeExtension f))
+ fileType' f ".lhs" = LiterateHaskell $ case fileType f of
+ -- If no extension is given, default to Markdown + LiterateHaskell
+ Binary -> Markdown
+ -- Otherwise, LaTeX + LiterateHaskell or whatever the user specified
+ x -> x
fileType' _ ".markdown" = Markdown
fileType' _ ".md" = Markdown
fileType' _ ".mdn" = Markdown
diff --git a/tests/Hakyll/Web/Pandoc/FileType/Tests.hs b/tests/Hakyll/Web/Pandoc/FileType/Tests.hs
new file mode 100644
index 0000000..e6b222f
--- /dev/null
+++ b/tests/Hakyll/Web/Pandoc/FileType/Tests.hs
@@ -0,0 +1,26 @@
+--------------------------------------------------------------------------------
+{-# LANGUAGE OverloadedStrings #-}
+module Hakyll.Web.Pandoc.FileType.Tests
+ ( tests
+ ) where
+
+
+--------------------------------------------------------------------------------
+import Test.Framework (Test, testGroup)
+import Test.HUnit ((@=?))
+
+
+--------------------------------------------------------------------------------
+import Hakyll.Web.Pandoc.FileType
+import TestSuite.Util
+
+
+--------------------------------------------------------------------------------
+tests :: Test
+tests = testGroup "Hakyll.Web.Pandoc.FileType.Tests" $
+ fromAssertions "fileType"
+ [ Markdown @=? fileType "index.md"
+ , Rst @=? fileType "about/foo.rst"
+ , LiterateHaskell Markdown @=? fileType "posts/bananas.lhs"
+ , LiterateHaskell LaTeX @=? fileType "posts/bananas.tex.lhs"
+ ]
diff --git a/tests/TestSuite.hs b/tests/TestSuite.hs
index 9be857c..7c913dd 100644
--- a/tests/TestSuite.hs
+++ b/tests/TestSuite.hs
@@ -20,6 +20,7 @@ import qualified Hakyll.Core.UnixFilter.Tests
import qualified Hakyll.Core.Util.String.Tests
import qualified Hakyll.Web.Html.RelativizeUrls.Tests
import qualified Hakyll.Web.Html.Tests
+import qualified Hakyll.Web.Pandoc.FileType.Tests
import qualified Hakyll.Web.Template.Context.Tests
import qualified Hakyll.Web.Template.Tests
@@ -38,6 +39,7 @@ main = defaultMain
, Hakyll.Core.Util.String.Tests.tests
, Hakyll.Web.Html.RelativizeUrls.Tests.tests
, Hakyll.Web.Html.Tests.tests
+ , Hakyll.Web.Pandoc.FileType.Tests.tests
, Hakyll.Web.Template.Context.Tests.tests
, Hakyll.Web.Template.Tests.tests
]