Allow use of a RIS bibliography with citeproc.
This commit is contained in:
parent
6cc253aab6
commit
677f2ca26e
2 changed files with 9 additions and 0 deletions
|
@ -5730,6 +5730,7 @@ to YAML array. A bibliography may have any of these formats:
|
||||||
BibTeX .bibtex
|
BibTeX .bibtex
|
||||||
CSL JSON .json
|
CSL JSON .json
|
||||||
CSL YAML .yaml
|
CSL YAML .yaml
|
||||||
|
RIS .ris
|
||||||
|
|
||||||
Note that `.bib` can be used with both BibTeX and BibLaTeX files;
|
Note that `.bib` can be used with both BibTeX and BibLaTeX files;
|
||||||
use the extension `.bibtex` to force interpretation as BibTeX.
|
use the extension `.bibtex` to force interpretation as BibTeX.
|
||||||
|
|
|
@ -16,6 +16,7 @@ import Text.Pandoc.Citeproc.Locator (parseLocator, toLocatorMap,
|
||||||
LocatorInfo(..))
|
LocatorInfo(..))
|
||||||
import Text.Pandoc.Citeproc.CslJson (cslJsonToReferences)
|
import Text.Pandoc.Citeproc.CslJson (cslJsonToReferences)
|
||||||
import Text.Pandoc.Citeproc.BibTeX (readBibtexString, Variant(..))
|
import Text.Pandoc.Citeproc.BibTeX (readBibtexString, Variant(..))
|
||||||
|
import Text.Pandoc.Readers.RIS (readRIS)
|
||||||
import Text.Pandoc.Citeproc.MetaValue (metaValueToReference, metaValueToText)
|
import Text.Pandoc.Citeproc.MetaValue (metaValueToReference, metaValueToText)
|
||||||
import Text.Pandoc.Readers.Markdown (yamlToRefs)
|
import Text.Pandoc.Readers.Markdown (yamlToRefs)
|
||||||
import Text.Pandoc.Builder (Inlines, Many(..), deleteMeta, setMeta)
|
import Text.Pandoc.Builder (Inlines, Many(..), deleteMeta, setMeta)
|
||||||
|
@ -267,6 +268,11 @@ getRefs locale format idpred mbfp raw = do
|
||||||
(T.unpack <$> mbfp)
|
(T.unpack <$> mbfp)
|
||||||
raw
|
raw
|
||||||
return $ mapMaybe metaValueToReference rs
|
return $ mapMaybe metaValueToReference rs
|
||||||
|
Format_ris -> do
|
||||||
|
Pandoc meta _ <- readRIS def (UTF8.toText raw)
|
||||||
|
case lookupMeta "references" meta of
|
||||||
|
Just (MetaList rs) -> return $ mapMaybe metaValueToReference rs
|
||||||
|
_ -> return []
|
||||||
|
|
||||||
-- assumes we walk in same order as query
|
-- assumes we walk in same order as query
|
||||||
insertResolvedCitations :: Inline -> State [Inlines] Inline
|
insertResolvedCitations :: Inline -> State [Inlines] Inline
|
||||||
|
@ -343,6 +349,7 @@ data BibFormat =
|
||||||
| Format_bibtex
|
| Format_bibtex
|
||||||
| Format_json
|
| Format_json
|
||||||
| Format_yaml
|
| Format_yaml
|
||||||
|
| Format_ris
|
||||||
deriving (Show, Eq, Ord)
|
deriving (Show, Eq, Ord)
|
||||||
|
|
||||||
formatFromExtension :: FilePath -> Maybe BibFormat
|
formatFromExtension :: FilePath -> Maybe BibFormat
|
||||||
|
@ -353,6 +360,7 @@ formatFromExtension fp = case dropWhile (== '.') $ takeExtension fp of
|
||||||
"json" -> Just Format_json
|
"json" -> Just Format_json
|
||||||
"yaml" -> Just Format_yaml
|
"yaml" -> Just Format_yaml
|
||||||
"yml" -> Just Format_yaml
|
"yml" -> Just Format_yaml
|
||||||
|
"ris" -> Just Format_ris
|
||||||
_ -> Nothing
|
_ -> Nothing
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue