diff --git a/citeproc-hs.cabal b/citeproc-hs.cabal index 542f893..606ec05 100644 --- a/citeproc-hs.cabal +++ b/citeproc-hs.cabal @@ -119,3 +119,3 @@ library build-depends: containers, directory, mtl, json, utf8-string, - bytestring, filepath, pandoc-types >= 1.8 && < 1.13 + bytestring, filepath, pandoc-types >= 1.8 diff --git a/src/Text/CSL/Output/Pandoc.hs b/src/Text/CSL/Output/Pandoc.hs index 0f2cdfb..74e698f 100644 --- a/src/Text/CSL/Output/Pandoc.hs +++ b/src/Text/CSL/Output/Pandoc.hs @@ -1,2 +1,2 @@ -{-# LANGUAGE PatternGuards, DeriveDataTypeable #-} +{-# LANGUAGE PatternGuards, DeriveDataTypeable, CPP #-} ----------------------------------------------------------------------------- @@ -78,2 +78,10 @@ tailFO (f:fs) +#if MIN_VERSION_pandoc_types(1,16,0) +# define P16_ATTRS nullAttr +# define P16_ATTRS_ _attrs +#else +# define P16_ATTRS +# define P16_ATTRS_ +#endif + renderFo :: Style -> FormattedOutput -> [Inline] @@ -85,3 +93,3 @@ renderFo sty fo | FO fm xs <- fo = toPandoc fm $ rest xs - | FUrl u fm <- fo = toPandoc fm [Link (toStr $ snd u) u] + | FUrl u fm <- fo = toPandoc fm [Link P16_ATTRS (toStr $ snd u) u] | otherwise = [] @@ -109,3 +117,3 @@ renderFo sty fo setCase' f i - | Link s r <- i = Link (map (setCase f) s) r + | Link P16_ATTRS_ s r <- i = Link P16_ATTRS_ (map (setCase f) s) r | otherwise = setCase f i @@ -148,3 +156,3 @@ renderFo sty fo rmZeros = dropWhile (== '0') - escape s x = Link x (s,s) -- we use a link to store some data + escape s x = Link P16_ATTRS x (s,s) -- we use a link to store some data @@ -181,3 +189,4 @@ clean s b (i:is) | Strong x <- i = split (isLink' "strong" ) (return . Strong ) x ++ clean s b is - | Link x t <- i = clean' s b (Link x t : clean s b is) + | Link P16_ATTRS_ x t <- i = clean' + s b (Link P16_ATTRS_ x t : clean s b is) | otherwise = clean' s b (i : clean s b is) @@ -185,10 +194,10 @@ clean s b (i:is) unwrap f ls - | Link x _ : _ <- ls = clean' s b x - | _ : _ <- ls = f ls + | Link P16_ATTRS_ x _ : _ <- ls = clean' s b x + | _ : _ <- ls = f ls | otherwise = [] isLink l il - | Link _ (x,y) <- il = x == l && x == y + | Link P16_ATTRS_ _ (x,y) <- il = x == l && x == y | otherwise = False isLink' l il - | Link _ (x,y) <- il = (x == l || x == "nodecor") && x == y + | Link P16_ATTRS_ _ (x,y) <- il = (x == l || x == "nodecor") && x == y | otherwise = False @@ -201,3 +210,3 @@ clean' _ _ [] = [] clean' s b (i:is) - | Link inls (y,z) <- i, y == "inquote" + | Link P16_ATTRS_ inls (y,z) <- i, y == "inquote" , y == z = case headInline is of @@ -235,7 +244,7 @@ flipFlop (i:is) reverseEmph' e - | bo, Emph inls <- e = Link (reverseEmph False inls) ("emph","emph") + | bo, Emph inls <- e = Link P16_ATTRS (reverseEmph False inls) ("emph","emph") | Emph inls <- e = Emph (reverseEmph True inls) - | Link ls (x,y) <- e = if x == "nodecor" && x == y - then Link ls ("emph","emph") - else e + | Link P16_ATTRS_ ls (x,y) <- e = if x == "nodecor" && x == y + then Link P16_ATTRS_ ls ("emph","emph") + else e | otherwise = e @@ -244,7 +253,7 @@ flipFlop (i:is) reverseStrong' e - | bo, Strong inls <- e = Link (reverseStrong False inls) ("strong","strong") + | bo, Strong inls <- e = Link P16_ATTRS (reverseStrong False inls) ("strong","strong") | Strong inls <- e = Strong (reverseStrong True inls) - | Link ls (x,y) <- e = if x == "nodecor" && x == y - then Link ls ("strong","strong") - else e + | Link P16_ATTRS_ ls (x,y) <- e = if x == "nodecor" && x == y + then Link P16_ATTRS_ ls ("strong","strong") + else e | otherwise = e @@ -306,3 +315,3 @@ initInline (i:[]) | Strikeout is <- i = return $ Strikeout (initInline is) - | Link is t <- i = return $ Link (initInline is) t + | Link P16_ATTRS_ is t <- i = return $ Link P16_ATTRS_ (initInline is) t | otherwise = [] @@ -336,3 +345,3 @@ mapHeadInline f (i:xs) | Strikeout is <- i = Strikeout (mapHeadInline f is) : xs - | Link is t <- i = Link (mapHeadInline f is) t : xs + | Link P16_ATTRS_ is t <- i = Link P16_ATTRS_ (mapHeadInline f is) t : xs | otherwise = i : xs @@ -348,3 +357,3 @@ getInline i | SmallCaps is <- i = is - | Link is _ <- i = is + | Link P16_ATTRS_ is _ <- i = is | otherwise = [] diff --git a/src/Text/CSL/Test.hs b/src/Text/CSL/Test.hs index 1a470cf..2d9befa 100644 --- a/src/Text/CSL/Test.hs +++ b/src/Text/CSL/Test.hs @@ -166,2 +166,8 @@ pandocBib s +#if MIN_VERSION_pandoc_types(1,16,0) +# define P16_ATTRS_ _attrs +#else +# define P16_ATTRS_ +#endif + pandocToHTML :: [Inline] -> String @@ -179,3 +185,3 @@ pandocToHTML (i:xs) SingleQuote -> "‘" ++ pandocToHTML is ++ "’" ++ pandocToHTML xs - | Link is x <- i = case snd x of + | Link P16_ATTRS_ is x <- i = case snd x of "emph" -> "" ++