diff options
author | John MacFarlane <jgm@berkeley.edu> | 2014-04-24 11:09:07 -0700 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2014-04-24 11:09:07 -0700 |
commit | d16775e1c7ba248e693817a8d53ebcb9a8332ed5 (patch) | |
tree | 1995148edfe53b3a0dab89dcd86682f6bb2af205 | |
parent | e0688711fd8fb640d96044413aa2d7b1b1cd4e03 (diff) | |
download | pandoc-d16775e1c7ba248e693817a8d53ebcb9a8332ed5.tar.gz |
Render numbers in YAML metadata without decimals when possible.
The change to aeson > 0.7 caused numbers to be rendered with
decimals. This change causes them to be rendered without decimals
wehn possible.
-rw-r--r-- | pandoc.cabal | 1 | ||||
-rw-r--r-- | src/Text/Pandoc/Readers/Markdown.hs | 7 |
2 files changed, 7 insertions, 1 deletions
diff --git a/pandoc.cabal b/pandoc.cabal index 3e202484a..eae8b97e0 100644 --- a/pandoc.cabal +++ b/pandoc.cabal @@ -233,6 +233,7 @@ Library blaze-markup >= 0.5.1 && < 0.7, attoparsec >= 0.10 && < 0.12, yaml >= 0.8.8.2 && < 0.9, + scientific >= 0.2 && < 0.3, vector >= 0.10 && < 0.11, hslua >= 0.3 && < 0.4, binary >= 0.5 && < 0.8 diff --git a/src/Text/Pandoc/Readers/Markdown.hs b/src/Text/Pandoc/Readers/Markdown.hs index 053385d20..d3ca8d26f 100644 --- a/src/Text/Pandoc/Readers/Markdown.hs +++ b/src/Text/Pandoc/Readers/Markdown.hs @@ -33,6 +33,7 @@ module Text.Pandoc.Readers.Markdown ( readMarkdown, import Data.List ( transpose, sortBy, findIndex, intersperse, intercalate ) import qualified Data.Map as M +import Data.Scientific (coefficient, base10Exponent) import Data.Ord ( comparing ) import Data.Char ( isAlphaNum, toLower ) import Data.Maybe @@ -285,7 +286,11 @@ toMetaValue opts x = yamlToMeta :: ReaderOptions -> Yaml.Value -> MetaValue yamlToMeta opts (Yaml.String t) = toMetaValue opts t -yamlToMeta _ (Yaml.Number n) = MetaString $ show n +yamlToMeta _ (Yaml.Number n) + -- avoid decimal points for numbers that don't need them: + | base10Exponent n >= 0 = MetaString $ show + $ coefficient n * (10 ^ base10Exponent n) + | otherwise = MetaString $ show n yamlToMeta _ (Yaml.Bool b) = MetaBool b yamlToMeta opts (Yaml.Array xs) = B.toMetaValue $ map (yamlToMeta opts) $ V.toList xs |