summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/Data/Yaml/Extended.hs6
-rw-r--r--tests/Hakyll/Web/Template/Tests.hs1
-rw-r--r--tests/data/example.md.metadata2
-rw-r--r--tests/data/just-meta.html7
-rw-r--r--tests/data/just-meta.html.out7
5 files changed, 22 insertions, 1 deletions
diff --git a/src/Data/Yaml/Extended.hs b/src/Data/Yaml/Extended.hs
index 099e945..c940ff7 100644
--- a/src/Data/Yaml/Extended.hs
+++ b/src/Data/Yaml/Extended.hs
@@ -7,12 +7,16 @@ module Data.Yaml.Extended
import qualified Data.Text as T
import qualified Data.Vector as V
import Data.Yaml
+import Data.Scientific
toString :: Value -> Maybe String
toString (String t) = Just (T.unpack t)
toString (Bool True) = Just "true"
toString (Bool False) = Just "false"
-toString (Number d) = Just (show d)
+-- | Make sure that numeric fields containing integer numbers are shown as
+-- | integers (i.e., "42" instead of "42.0").
+toString (Number d) | isInteger d = Just (formatScientific Fixed (Just 0) d)
+ | otherwise = Just (show d)
toString _ = Nothing
toList :: Value -> Maybe [Value]
diff --git a/tests/Hakyll/Web/Template/Tests.hs b/tests/Hakyll/Web/Template/Tests.hs
index 1f3b25d..054a9bd 100644
--- a/tests/Hakyll/Web/Template/Tests.hs
+++ b/tests/Hakyll/Web/Template/Tests.hs
@@ -29,6 +29,7 @@ tests :: TestTree
tests = testGroup "Hakyll.Core.Template.Tests" $ concat
[ [ testCase "case01" $ test ("template.html.out", "template.html", "example.md")
, testCase "case02" $ test ("strip.html.out", "strip.html", "example.md")
+ , testCase "case03" $ test ("just-meta.html.out", "just-meta.html", "example.md")
, testCase "applyJoinTemplateList" testApplyJoinTemplateList
]
diff --git a/tests/data/example.md.metadata b/tests/data/example.md.metadata
index 5d463ae..57756c2 100644
--- a/tests/data/example.md.metadata
+++ b/tests/data/example.md.metadata
@@ -1,3 +1,5 @@
external: External data
date: 2012-10-22 14:35:24
subblog: food
+intfield: 42
+numfield: 3.14
diff --git a/tests/data/just-meta.html b/tests/data/just-meta.html
new file mode 100644
index 0000000..94a8e09
--- /dev/null
+++ b/tests/data/just-meta.html
@@ -0,0 +1,7 @@
+<pre>
+external: {$external$}
+date: {$date$}
+subblog: {$subblog$}
+intfield: {$intfield$}
+numfield: {$numfield$}
+</pre>
diff --git a/tests/data/just-meta.html.out b/tests/data/just-meta.html.out
new file mode 100644
index 0000000..4521f59
--- /dev/null
+++ b/tests/data/just-meta.html.out
@@ -0,0 +1,7 @@
+<pre>
+external: {External data}
+date: {2012-10-22 14:35:24}
+subblog: {food}
+intfield: {42}
+numfield: {3.14}
+</pre>