From 7115edfeb7eecb150b3ed698964ed503f4399640 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Mon, 23 Oct 2023 10:30:34 -0700 Subject: Add helpful message on some metadata YAML errors. Closes #9155. --- src/Text/Pandoc/Readers/Metadata.hs | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) (limited to 'src/Text') diff --git a/src/Text/Pandoc/Readers/Metadata.hs b/src/Text/Pandoc/Readers/Metadata.hs index 454a3be90..49109fa0c 100644 --- a/src/Text/Pandoc/Readers/Metadata.hs +++ b/src/Text/Pandoc/Readers/Metadata.hs @@ -31,7 +31,6 @@ import Text.Pandoc.Class.PandocMonad (PandocMonad (..)) import Text.Pandoc.Definition import Text.Pandoc.Error import Text.Pandoc.Parsing hiding (tableWith, parse) - import qualified Text.Pandoc.UTF8 as UTF8 yamlBsToMeta :: (PandocMonad m, HasLastStrPosition st) @@ -45,8 +44,12 @@ yamlBsToMeta pMetaValue bstr = do Right [Null] -> return . return $ mempty Right _ -> Prelude.fail "expected YAML object" Left err' -> do - throwError $ PandocParseError - $ T.pack $ Yaml.prettyPrintParseException err' + let msg = T.pack $ Yaml.prettyPrintParseException err' + throwError $ PandocParseError $ + if "did not find expected key" `T.isInfixOf` msg + then msg <> + "\nConsider enclosing the entire field in 'single quotes'" + else msg -- Returns filtered list of references. yamlBsToRefs :: (PandocMonad m, HasLastStrPosition st) @@ -69,9 +72,8 @@ yamlBsToRefs pMetaValue idpred bstr = mapM (yamlToMetaValue pMetaValue) (filter hasSelectedId refs) _ -> return $ return [] Right _ -> return . return $ [] - Left err' -> do - throwError $ PandocParseError - $ T.pack $ Yaml.prettyPrintParseException err' + Left err' -> throwError $ PandocParseError + $ T.pack $ Yaml.prettyPrintParseException err' normalizeMetaValue :: (PandocMonad m, HasLastStrPosition st) => ParsecT Sources st m (Future st MetaValue) -- cgit v1.2.3