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": [ [