aboutsummaryrefslogtreecommitdiff
path: root/src/Text/Pandoc/Citeproc.hs
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2020-10-05 21:07:47 -0700
committerJohn MacFarlane <jgm@berkeley.edu>2020-10-05 21:07:47 -0700
commit6a32ea71ea9af8613b8585e874fef8d5f29665fa (patch)
tree12b2ed269b25149bb5620b0c9d09c658f923dd32 /src/Text/Pandoc/Citeproc.hs
parent89e4f1bf9ad48e3fdefeb5c921e9af62ebc24601 (diff)
downloadpandoc-6a32ea71ea9af8613b8585e874fef8d5f29665fa.tar.gz
Add yamlToRefs, yamlBsToRefs.
T.P.Readers.Markdown now exports yamlToRefs. [API change] T.P.Readers.Metadata exports yamlBsToRefs. [API change] These allow specifying an id filter so we parse only references that are used in the document. Improves timing with a 3M yaml references file from 36s to 17s.
Diffstat (limited to 'src/Text/Pandoc/Citeproc.hs')
-rw-r--r--src/Text/Pandoc/Citeproc.hs12
1 files changed, 5 insertions, 7 deletions
diff --git a/src/Text/Pandoc/Citeproc.hs b/src/Text/Pandoc/Citeproc.hs
index 8274e35d7..4f92cf8ca 100644
--- a/src/Text/Pandoc/Citeproc.hs
+++ b/src/Text/Pandoc/Citeproc.hs
@@ -18,7 +18,7 @@ import Text.Pandoc.Citeproc.Locator (parseLocator)
import Text.Pandoc.Citeproc.CslJson (cslJsonToReferences)
import Text.Pandoc.Citeproc.BibTeX (readBibtexString, Variant(..))
import Text.Pandoc.Citeproc.MetaValue (metaValueToReference, metaValueToText)
-import Text.Pandoc.Readers.Markdown (yamlToMeta)
+import Text.Pandoc.Readers.Markdown (yamlToRefs)
import Text.Pandoc.Class (setResourcePath, getResourcePath, getUserDataDir)
import Data.ByteString (ByteString)
import qualified Data.ByteString.Lazy as L
@@ -213,12 +213,10 @@ getRefs locale format idpred raw =
(return . filter (idpred . unItemId . referenceId)) .
cslJsonToReferences $ raw
Format_yaml -> do
- meta <- yamlToMeta def{ readerExtensions = pandocExtensions }
- (L.fromStrict raw)
- case lookupMeta "references" meta of
- Just (MetaList rs) ->
- return $ mapMaybe (metaValueToReference idpred) rs
- _ -> throwError $ PandocAppError "No references field"
+ rs <- yamlToRefs idpred
+ def{ readerExtensions = pandocExtensions }
+ (L.fromStrict raw)
+ return $ mapMaybe (metaValueToReference idpred . MetaMap) rs
-- localized quotes
convertQuotes :: Locale -> Inline -> Inline