summaryrefslogtreecommitdiff
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
parent3da5440858c7542d6405f4a579071bc7c2ea3a11 (diff)
RIS reader: support ID and DO fields.
-rw-r--r--src/Text/Pandoc/Readers/RIS.hs7
-rw-r--r--test/command/7894.md3
2 files changed, 8 insertions, 2 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"]
diff --git a/test/command/7894.md b/test/command/7894.md
index f9c7c1e38..66c90bc9c 100644
--- a/test/command/7894.md
+++ b/test/command/7894.md
@@ -1,6 +1,7 @@
```
% pandoc -f ris -t csljson
TY - BOOK
+ID - Chang_Keisler_Model_Theory
AU - Chang, C. C.
AU - Keisler, H. Jerome
PY - 1990
@@ -47,7 +48,7 @@ ER -
}
],
"edition": "3",
- "id": "Chang_Keisler_1990",
+ "id": "Chang_Keisler_Model_Theory",
"issued": {
"date-parts": [
[