git.iko.soy/typeable/pandoc
on master help sign in
Simplify/fix reading of `--metadata` values on command line.
ffc2192John MacFarlane
src/Text/Pandoc/App.hs+8−7
@@ -55,7 +55,6 @@ import qualified Data.Text.Lazy as TL
55import qualified Data.Text.Lazy.Encoding as TE
55import qualified Data.Text.Lazy.Encoding as TE
56import qualified Data.Text.Encoding.Error as TE
56import qualified Data.Text.Encoding.Error as TE
57import qualified Data.Text.Encoding.Error as TSE
57import qualified Data.Text.Encoding.Error as TSE
58−import qualified Data.YAML as YAML
59import Network.URI (URI (..), parseURI)
58import Network.URI (URI (..), parseURI)
60import System.Directory (getAppUserDataDirectory)
59import System.Directory (getAppUserDataDirectory)
61import System.Exit (exitSuccess)
60import System.Exit (exitSuccess)
@@ -332,12 +331,14 @@ removeMetaKeys :: [(String,String)] -> Pandoc -> Pandoc
332removeMetaKeys kvs pdc = foldr (deleteMeta . fst) pdc kvs
331removeMetaKeys kvs pdc = foldr (deleteMeta . fst) pdc kvs
333
332
334readMetaValue :: String -> MetaValue
333readMetaValue :: String -> MetaValue
335−readMetaValue s = case YAML.decodeStrict (UTF8.fromString s) of
334+readMetaValue s
336− Right [YAML.Scalar (YAML.SStr t)]
335+ | s == "true" = MetaBool True
337− -> MetaString $ T.unpack t
336+ | s == "True" = MetaBool True
338− Right [YAML.Scalar (YAML.SBool b)]
337+ | s == "TRUE" = MetaBool True
338+ | s == "false" = MetaBool False
339+ | s == "False" = MetaBool False
339− -> MetaBool b
340+ | s == "FALSE" = MetaBool False
340− _ -> MetaString s
341+ | otherwise = MetaString s
341
342
342-- Transformations of a Pandoc document post-parsing:
343-- Transformations of a Pandoc document post-parsing:
343
344
test/command/5177.mdnew file+12
@@ -0,0 +1,12 @@
1+This should not give a "Prelude.read: no parse" error:
2+
3+```
4+% pandoc -M foo=1e -s -t markdown
5+hi
6+^D
7+---
8+foo: 1e
9+---
10+
11+hi
12+```