summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2022-02-05 23:34:44 -0800
committerJohn MacFarlane <jgm@berkeley.edu>2022-02-05 23:34:44 -0800
commit6cc253aab68fa7b1bb53704350923628826464ea (patch)
tree3037f8c747f9c24c50552ff64badbb861b8c7f8b /src
parent3da5440858c7542d6405f4a579071bc7c2ea3a11 (diff)
RIS reader: support ID and DO fields.
Diffstat (limited to 'src')
-rw-r--r--src/Text/Pandoc/Readers/RIS.hs7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/Text/Pandoc/Readers/RIS.hs b/src/Text/Pandoc/Readers/RIS.hs
index d81b265d1..27c92cec9 100644
--- a/src/Text/Pandoc/Readers/RIS.hs
+++ b/src/Text/Pandoc/Readers/RIS.hs
@@ -88,6 +88,7 @@ risRecordToReference keys = addId $ foldr go defref keys
case key of
"TY" -> \ref -> ref{ referenceType =
fromMaybe "misc" (M.lookup val risTypes) }
+ "ID" -> \ref -> ref{ referenceId = ItemId val }
"VL" -> addVar "volume" val
"KW" -> \ref ->
ref{ referenceVariables =
@@ -100,6 +101,7 @@ risRecordToReference keys = addId $ foldr go defref keys
(referenceVariables ref) }
"PB" -> addVar "publisher" val
"PP" -> addVar "publisher-place" val
+ "DO" -> addVar "DOI" val
"SP" -> \ref ->
case M.lookup "page" (referenceVariables ref) of
Nothing -> addVar "page" val ref
@@ -165,7 +167,10 @@ risRecordToReference keys = addId $ foldr go defref keys
, referenceType = mempty
, referenceDisambiguation = Nothing
, referenceVariables = mempty }
- addId rec = rec{ referenceId = ItemId (authors <> pubdate) }
+ addId rec =
+ if referenceId rec == mempty
+ then rec{ referenceId = ItemId (authors <> pubdate) }
+ else rec
authors = T.intercalate "_" $
[T.takeWhile (\c -> c /= ',' && not (isSpace c)) n
| (k, n) <- keys, k == "AU" || k == "A1"]