diff options
| author | John MacFarlane <jgm@berkeley.edu> | 2022-02-05 23:34:44 -0800 |
|---|---|---|
| committer | John MacFarlane <jgm@berkeley.edu> | 2022-02-05 23:34:44 -0800 |
| commit | 6cc253aab68fa7b1bb53704350923628826464ea (patch) | |
| tree | 3037f8c747f9c24c50552ff64badbb861b8c7f8b | |
| parent | 3da5440858c7542d6405f4a579071bc7c2ea3a11 (diff) | |
RIS reader: support ID and DO fields.
| -rw-r--r-- | src/Text/Pandoc/Readers/RIS.hs | 7 | ||||
| -rw-r--r-- | test/command/7894.md | 3 |
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": [ [ |
