From fd3809c33f663627f43168d347c7f2690a74b56f Mon Sep 17 00:00:00 2001
From: John MacFarlane <jgm@berkeley.edu>
Date: Tue, 6 Oct 2020 22:28:22 -0700
Subject: Unescape entities in writing CSL JSON.

The renderCslJson function escapes `<`, `>`, and `&` as entities.
This is appropriate when generating HTML, but in CSL JSON
these are supposed to appear unescaped.

Closes jgm/citeproc#17.
---
 src/Text/Pandoc/Writers/CslJson.hs | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

(limited to 'src')

diff --git a/src/Text/Pandoc/Writers/CslJson.hs b/src/Text/Pandoc/Writers/CslJson.hs
index 3a8f6f5b1..95ffb34a7 100644
--- a/src/Text/Pandoc/Writers/CslJson.hs
+++ b/src/Text/Pandoc/Writers/CslJson.hs
@@ -23,6 +23,7 @@ import qualified Data.Text as T
 import qualified Text.Pandoc.UTF8 as UTF8
 import Text.Pandoc.Error
 import Text.Pandoc.Class
+import Text.Pandoc.XML (fromEntities)
 import Control.Monad.Except (throwError)
 import Data.ByteString.Lazy (toStrict)
 import Data.ByteString (ByteString)
@@ -84,5 +85,7 @@ toCslJson locale = toStrict .
   encodePretty' defConfig{ confIndent = Spaces 2
                          , confCompare = compare
                          , confNumFormat = Generic }
-  . map (runIdentity .  traverse (return . renderCslJson locale . foldMap fromInline))
-
+  . map (runIdentity .  traverse (return .
+                                  fromEntities .
+                                  renderCslJson locale .
+                                  foldMap fromInline))
-- 
cgit v1.2.3