pandoc-citeproc 0.10.3 → 0.10.4
raw patch · 24 files changed
+288/−140 lines, 24 filesdep ~pandocPVP ok
version bump matches the API change (PVP)
Dependency ranges changed: pandoc
API changes (from Hackage documentation)
Files
- changelog +16/−0
- compat/Text/CSL/Compat/Pandoc.hs +88/−0
- pandoc-citeproc.cabal +19/−11
- src/Text/CSL/Eval/Names.hs +9/−12
- src/Text/CSL/Input/Bibtex.hs +5/−10
- src/Text/CSL/Input/Bibutils.hs +5/−9
- src/Text/CSL/Output/Pandoc.hs +2/−0
- src/Text/CSL/Output/Plain.hs +2/−1
- src/Text/CSL/Pandoc.hs +8/−12
- src/Text/CSL/Parser.hs +1/−1
- src/Text/CSL/Style.hs +2/−9
- src/Text/CSL/Util.hs +51/−9
- stack.yaml +7/−4
- tests/issue13.expected.native +4/−2
- tests/issue175.expected.native +4/−2
- tests/issue197.expected.native +2/−2
- tests/issue61.expected.native +10/−6
- tests/issue64.expected.native +3/−3
- tests/issue68.expected.native +4/−2
- tests/issue77.expected.native +12/−2
- tests/issue82.expected.native +4/−2
- tests/mhra.expected.native +15/−9
- tests/test-citeproc.hs +9/−16
- tests/test-pandoc-citeproc.hs +6/−16
changelog view
@@ -1,3 +1,19 @@+pandoc-citeproc (0.10.4)++ * Fixed 'et al' in certain styles (#274). The `et al` phrase was+ not being appended in the bibliography in ieee.csl and some others.+ * Leave ALLCAPS words alone in titlecase transformation.+ See #273. There is some confusion about the citeproc+ rules here, but this follows citeproc-js behavior.+ * Improved title case rules to conform better to CSL spec (#273).+ We now correctly retain case on mixed-case words and don't+ decapitalize "small words" when they're the last word.+ * Use readerSmart in parsing yaml bibliographies (#272).+ * Bumped some dependency version bounds.+ * Improved .travis.yml.+ * Added Text.CSL.Compat.Pandoc module to work around version differences.+ This allows building with the typeclass branch of pandoc.+ pandoc-citeproc (0.10.3) * Update to work with pandoc 1.19 (including writerStandalone API change).
+ compat/Text/CSL/Compat/Pandoc.hs view
@@ -0,0 +1,88 @@+{-# LANGUAGE CPP, ScopedTypeVariables #-}+-- | Compatibility module to work around differences in the+-- types of functions between pandoc < 2.0 and pandoc >= 2.0.+module Text.CSL.Compat.Pandoc (+ writeMarkdown,+ writePlain,+ writeNative,+ writeHtmlString,+ readNative,+ readHtml,+ readMarkdown,+ readLaTeX,+ fetchItem,+ pipeProcess ) where++import qualified Control.Exception as E+import System.Exit (ExitCode)+import Data.ByteString.Lazy as BL+import Data.ByteString as B+import Text.Pandoc (Pandoc, ReaderOptions, WriterOptions)+import qualified Text.Pandoc as Pandoc+import qualified Text.Pandoc.Process+#if MIN_VERSION_pandoc(2,0,0)+import Text.Pandoc.MIME (MimeType)+import Text.Pandoc.Error (PandocError)+import Text.Pandoc.Class (runPure, runIO)+import qualified Text.Pandoc.Class (fetchItem)+import Control.Monad.Except (runExceptT, lift)+#else+import System.IO (stderr)+import qualified Text.Pandoc.Shared (fetchItem)++type MimeType = String+#endif++#if MIN_VERSION_pandoc(2,0,0)+#define WRAPREADER(f) f o = either mempty id . runPure . Pandoc.f o+#define WRAPWRITER(f) f o = either mempty id . runPure . Pandoc.f o+#else+#define WRAPREADER(f) f o = either mempty id . Pandoc.f o+#define WRAPWRITER(f) f = Pandoc.f+#endif++readHtml, readLaTeX, readMarkdown, readNative ::+ ReaderOptions -> String -> Pandoc++WRAPREADER(readHtml)+WRAPREADER(readLaTeX)+WRAPREADER(readMarkdown)++#if MIN_VERSION_pandoc(2,0,0)+WRAPREADER(readNative)+#else+readNative _ = either mempty id . Pandoc.readNative+#endif++writeMarkdown, writePlain, writeNative, writeHtmlString ::+ WriterOptions -> Pandoc -> String++WRAPWRITER(writeMarkdown)+WRAPWRITER(writePlain)+WRAPWRITER(writeNative)+WRAPWRITER(writeHtmlString)++pipeProcess :: Maybe [(String, String)] -> FilePath -> [String]+ -> BL.ByteString -> IO (ExitCode,BL.ByteString)+#if MIN_VERSION_pandoc(2,0,0)+pipeProcess = Text.Pandoc.Process.pipeProcess+#else+pipeProcess e f a b = do+ (ec, out, err) <- Text.Pandoc.Process.pipeProcess e f a b+ BL.hPutStr stderr err+ return (ec, out)+#endif++fetchItem :: Maybe String+ -> String+ -> IO (Either E.SomeException (B.ByteString, Maybe MimeType))+#if MIN_VERSION_pandoc(2,0,0)+fetchItem mbd s = do+ res <- runIO $ runExceptT $ lift $ Text.Pandoc.Class.fetchItem mbd s+ return $ case res of+ Left e -> Left (E.toException e)+ Right (Left (e :: PandocError)) -> Left (E.toException e)+ Right (Right r) -> Right r+#else+fetchItem = Text.Pandoc.Shared.fetchItem+#endif
pandoc-citeproc.cabal view
@@ -1,5 +1,5 @@ name: pandoc-citeproc-version: 0.10.3+version: 0.10.4 cabal-version: >= 1.12 synopsis: Supports using pandoc with citeproc @@ -70,7 +70,7 @@ default: False library- hs-source-dirs: src, prelude+ hs-source-dirs: src, prelude, compat exposed-modules: Text.CSL.Pandoc Text.CSL Text.CSL.Reference@@ -92,14 +92,17 @@ other-modules: Text.CSL.Util Prelude Paths_pandoc_citeproc+ Text.CSL.Compat.Pandoc ghc-options: -funbox-strict-fields -Wall -fno-warn-unused-do-bind ghc-prof-options: -fprof-auto-exported build-depends: containers, directory, mtl, bytestring, filepath, pandoc-types >= 1.16 && < 1.18,- pandoc >= 1.16 && < 1.20,+ pandoc >= 1.16 && < 2.1, tagsoup,- aeson >= 0.7 && < 1.1, text, vector,+ aeson >= 0.7 && < 1.2,+ text,+ vector, xml-conduit >= 1.2 && < 1.5, unordered-containers >= 0.2 && < 0.3, data-default,@@ -142,13 +145,14 @@ ghc-prof-options: -fprof-auto-exported -rtsopts build-depends: base >= 4, pandoc-citeproc, pandoc-types >= 1.16 && < 1.18,- pandoc >= 1.16 && < 1.20,+ pandoc >= 1.16 && < 2.1, aeson, aeson-pretty >= 0.8, yaml, bytestring, syb, attoparsec, text, filepath other-modules: Paths_pandoc_citeproc Prelude default-language: Haskell2010+ ghc-options: -funbox-strict-fields -Wall -fno-warn-unused-do-bind if flag(bibutils) default-extensions: CPP cpp-options: -DUSE_BIBUTILS@@ -157,28 +161,32 @@ Main-Is: test-citeproc.hs Other-Modules: JSON Prelude- Hs-Source-Dirs: tests, prelude+ Hs-Source-Dirs: tests, prelude, compat if flag(test_citeproc) Buildable: True else Buildable: False- build-depends: base >= 4, aeson, directory, text,+ build-depends: base >= 4, aeson, directory, text, mtl, pandoc-types >= 1.16 && < 1.18,- pandoc >= 1.16 && < 1.20,+ pandoc >= 1.16 && < 2.1, filepath, bytestring, pandoc-citeproc, process, temporary >= 1.1, yaml >= 0.8.8.7, containers >= 0.4, vector >= 0.10+ ghc-options: -funbox-strict-fields -Wall -fno-warn-unused-do-bind default-language: Haskell2010+ other-modules: Text.CSL.Compat.Pandoc test-suite test-pandoc-citeproc Type: exitcode-stdio-1.0 Main-Is: test-pandoc-citeproc.hs Other-Modules: JSON Prelude- Hs-Source-Dirs: tests, prelude+ Hs-Source-Dirs: tests, prelude, compat build-depends: base >= 4, aeson, directory, text,- pandoc-types >= 1.16 && < 1.18,- pandoc >= 1.16 && < 1.20, filepath,+ pandoc-types >= 1.16 && < 1.18, mtl,+ pandoc >= 1.16 && < 2.1, filepath, bytestring, pandoc-citeproc, process, temporary >= 1.1, yaml >= 0.8.8.7+ ghc-options: -funbox-strict-fields -Wall -fno-warn-unused-do-bind default-language: Haskell2010+ other-modules: Text.CSL.Compat.Pandoc
src/Text/CSL/Eval/Names.hs view
@@ -119,18 +119,15 @@ | EtAl fm t <- n = do o <- gets (options . env)- if (getOptionVal "et-al-min" o == [])- then return []- else do- et <- gets etal- let i = length as - length et- t' = if null t then "et-al" else t- r <- mapM (et_al o False t' fm del) [i .. length as]- let (r',r'') = case r of- (x:xs) -> (x, xs)- [] -> ([],[])- updateEtal r''- return r'+ et <- gets etal+ let i = length as - length et+ t' = if null t then "et-al" else t+ r <- mapM (et_al o False t' fm del) [i .. length as]+ let (r',r'') = case r of+ (x:xs) -> (x, xs)+ [] -> ([],[])+ updateEtal r''+ return r' | otherwise = return [] where
src/Text/CSL/Input/Bibtex.hs view
@@ -1,5 +1,5 @@+{-# LANGUAGE ScopedTypeVariables #-} {-# OPTIONS_GHC -fno-warn-unused-do-bind #-}-{-# LANGUAGE CPP #-} ----------------------------------------------------------------------------- -- | -- Module : Text.CSL.Input.Bibtex@@ -20,7 +20,8 @@ import Text.Parsec hiding (optional, (<|>), many, State) import Control.Applicative-import Text.Pandoc (readLaTeX, ReaderOptions(..))+import Text.Pandoc (ReaderOptions(..))+import Text.CSL.Compat.Pandoc (readLaTeX) import Text.Pandoc.Definition import Text.Pandoc.Generic (bottomUp) import Data.Default (Default(def))@@ -937,7 +938,7 @@ _ -> (mempty, mempty, mempty) let year'' = case safeRead year' of -- EDTF 0 == CSL JSON -1 (1 BCE)- Just n | n <= 0 -> show (n - 1)+ Just (n :: Integer) | n <= 0 -> show (n - 1) _ -> year' let (season'', month'') = case month' of "21" -> ("1","")@@ -1124,14 +1125,8 @@ latex' :: String -> [Block] latex' s = Walk.walk removeSoftBreak $-#if MIN_VERSION_pandoc(1,14,0) case readLaTeX def{readerParseRaw = True, readerSmart = True} s of- Right (Pandoc _ bs) -> bs- _ -> []-#else- case readLaTeX def{readerParseRaw = True, readerSmart = True} s of- Pandoc _ bs -> bs-#endif+ (Pandoc _ bs) -> bs removeSoftBreak :: Inline -> Inline removeSoftBreak SoftBreak = Space
src/Text/CSL/Input/Bibutils.hs view
@@ -19,7 +19,8 @@ ) where import qualified Text.Pandoc.UTF8 as UTF8-import Text.Pandoc+import Text.Pandoc hiding (readMarkdown)+import Text.CSL.Compat.Pandoc (readMarkdown) import Data.Char import System.FilePath ( takeExtension ) import Text.CSL.Reference hiding ( Value )@@ -147,14 +148,9 @@ readYamlBib :: String -> Either String [Reference] readYamlBib s =-#if MIN_VERSION_pandoc(1,14,0)- case readMarkdown def{readerStandalone = True} s of- Right (Pandoc meta _) -> convertRefs (lookupMeta "references" meta)- Left e -> Left (show e)-#else- case readMarkdown def{readerStandalone = True} s of- Pandoc meta _ -> convertRefs (lookupMeta "references" meta)-#endif+ case readMarkdown def{ readerStandalone = True+ , readerSmart = True } s of+ (Pandoc meta _) -> convertRefs (lookupMeta "references" meta) convertRefs :: Maybe MetaValue -> Either String [Reference] convertRefs Nothing = Right []
src/Text/CSL/Output/Pandoc.hs view
@@ -48,6 +48,8 @@ clean' _ [] = [] clean' sty (i:is) = case (i:is) of+ (Str "" : rest) -> clean' sty rest+ (Str xs : Str ys : rest) -> clean' sty $ Str (xs ++ ys) : rest (Link a1 lab1 ('#':r1, "") : Str "\8211" : Link a2 lab2 ('#':r2, "") : rest) | r1 == r2, a1 == a2 -> Link a1 (lab1 ++ [Str "\8211"] ++ lab2) ('#':r1, "") : clean' sty rest
src/Text/CSL/Output/Plain.hs view
@@ -18,7 +18,8 @@ ) where import Text.CSL.Style-import Text.Pandoc+import Text.CSL.Compat.Pandoc (writePlain)+import Text.Pandoc (Block(Plain), Pandoc(..), nullMeta, def) -- | Render the 'Formatted' into a plain text string. renderPlain :: Formatted -> String
src/Text/CSL/Pandoc.hs view
@@ -21,7 +21,7 @@ import Text.CSL.Output.Pandoc (renderPandoc, renderPandoc') import qualified Text.CSL.Style as CSL import Text.CSL.Parser-import Text.CSL.Output.Pandoc ( headInline, tailFirstInlineStr, initInline,+import Text.CSL.Output.Pandoc ( headInline, tailInline, initInline, toCapital ) import Text.CSL.Data (getDefaultCSL) import Text.Parsec hiding (State, (<|>))@@ -272,7 +272,7 @@ mvPunct _ _ (x : Space : xs) | isSpacy x = x : xs mvPunct moveNotes _ (s : x : ys) | isSpacy s, isNote x, startWithPunct ys = if moveNotes- then Str (headInline ys) : x : tailFirstInlineStr ys+ then Str (headInline ys) : x : tailInline ys else x : ys mvPunct moveNotes _ (Cite cs ils : ys) | length ils > 1@@ -280,7 +280,7 @@ , startWithPunct ys , moveNotes = Cite cs (init ils ++ [Str (headInline ys) | not (endWithPunct False (init ils))]- ++ [last ils]) : tailFirstInlineStr ys+ ++ [last ils]) : tailInline ys mvPunct moveNotes sty (q@(Quoted _ _) : w@(Str _) : x : ys) | isNote x, isPunctuationInQuote sty, moveNotes = mvPunctInsideQuote q w ++ (x : ys)@@ -305,8 +305,8 @@ deNote :: Pandoc -> Pandoc deNote = topDown go- where go (Cite (c:cs) [Note xs]) =- Cite (c:cs) [Note $ sanitize xs]+ where go (Cite (c:cs) [Note [Para xs]]) =+ Cite (c:cs) [Note [Para $ toCapital xs]] go (Note xs) = Note $ topDown go' xs go x = x go' (x : Cite cs [Note [Para xs]] : ys) | not (isSpacy x) =@@ -316,19 +316,15 @@ go' (Cite cs [Note [Para xs]] : ys) = comb (\zs -> [Cite cs zs]) xs ys go' (Note [Para xs] : ys) = comb id xs ys go' xs = xs- sanitize :: [Block] -> [Block]- sanitize [Para xs] =- [Para $ toCapital xs ++ if endWithPunct False xs then [Space] else []]- sanitize bs = bs comb :: ([Inline] -> [Inline]) -> [Inline] -> [Inline] -> [Inline] comb f xs ys = let xs' = if startWithPunct ys && endWithPunct True xs then initInline $ removeLeadingPunct xs else removeLeadingPunct xs- removeLeadingPunct (Str [c] : s : xs)- | isSpacy s && (c == ',' || c == '.' || c == ':') = xs- removeLeadingPunct xs = xs+ removeLeadingPunct (Str [c] : s : zs)+ | isSpacy s && (c == ',' || c == '.' || c == ':') = zs+ removeLeadingPunct zs = zs in f xs' ++ ys -- | Retrieve all citations from a 'Pandoc' docuument. To be used with
src/Text/CSL/Parser.hs view
@@ -31,7 +31,7 @@ import Text.XML.Cursor import Data.Maybe (listToMaybe, fromMaybe) import Text.Pandoc.UTF8 (fromStringLazy)-import Text.Pandoc.Shared (fetchItem)+import Text.CSL.Compat.Pandoc (fetchItem) import Text.CSL.Data (getLocale) -- | Parse a 'String' into a 'Style' (with default locale).
src/Text/CSL/Style.hs view
@@ -106,9 +106,9 @@ import Data.Yaml.Builder(ToYaml(..)) import qualified Data.Yaml.Builder as Y import Text.Pandoc.Definition hiding (Citation, Cite)-import Text.Pandoc (readHtml, writeMarkdown,- WriterOptions(..), ReaderOptions(..), WrapOption(..),+import Text.Pandoc (WriterOptions(..), ReaderOptions(..), WrapOption(..), bottomUp, def)+import Text.CSL.Compat.Pandoc (readHtml, writeMarkdown) import qualified Text.Pandoc.Walk as Walk import qualified Text.Pandoc.Builder as B import qualified Data.Text as T@@ -133,16 +133,9 @@ $ case readHtml def{ readerSmart = True , readerParseRaw = True } (adjustScTags s) of-#if MIN_VERSION_pandoc(1,14,0)- Right (Pandoc _ [Plain ils]) -> ils- Right (Pandoc _ [Para ils]) -> ils- Right (Pandoc _ x) -> Walk.query (:[]) x- Left _ -> []-#else Pandoc _ [Plain ils] -> ils Pandoc _ [Para ils] -> ils Pandoc _ x -> Walk.query (:[]) x-#endif -- this is needed for versions of pandoc that don't turn -- a span with font-variant:small-caps into a SmallCaps element: where handleSmallCapsSpans (Span ("",[],[("style",sty)]) ils)
src/Text/CSL/Util.hs view
@@ -49,8 +49,7 @@ import Data.Aeson.Types (Parser) import Data.Text (Text) import qualified Data.Text as T-import Data.Char (toLower, toUpper, isLower, isUpper, isPunctuation,- isLetter, isAscii)+import Data.Char (toLower, toUpper, isLower, isUpper, isPunctuation, isAscii) import qualified Data.Traversable import Text.Pandoc.Shared (safeRead, stringify) import Text.Pandoc.Walk (walk)@@ -186,7 +185,10 @@ startsWithLowercase _ = False splitUpStr :: [Inline] -> [Inline]-splitUpStr = splitStrWhen (\c -> isPunctuation c || c == '\160')+splitUpStr ils =+ case reverse (splitStrWhen (\c -> isPunctuation c || c == '\160') ils) of+ [] -> []+ (x:xs) -> reverse $ Span ("",["lastword"],[]) [x] : xs unTitlecase :: [Inline] -> [Inline] unTitlecase zs = evalState (caseTransform untc zs) SentenceBoundary@@ -194,6 +196,8 @@ st <- get case (w, st) of (y, NoBoundary) -> return y+ (Str (x:xs), LastWordBoundary) | isUpper x ->+ return $ Str (map toLower (x:xs)) (Str (x:xs), WordBoundary) | isUpper x -> return $ Str (map toLower (x:xs)) (Str (x:xs), SentenceBoundary) | isLower x ->@@ -212,16 +216,42 @@ _ -> return $ Span ("",["nocase"],[]) xs protect x = return x +-- From CSL docs:+-- "Title case conversion (with text-case set to “title”) for English-language+-- items is performed by:+--+-- For uppercase strings, the first character of each word remains capitalized.+-- All other letters are lowercased.+-- For lower or mixed case strings, the first character of each lowercase word+-- is capitalized. The case of words in mixed or uppercase stays the same.+-- In both cases, stop words are lowercased, unless they are the first or last+-- word in the string, or follow a colon. The stop words are “a”, “an”, “and”,+-- “as”, “at”, “but”, “by”, “down”, “for”, “from”, “in”, “into”, “nor”, “of”,+-- “on”, “onto”, “or”, “over”, “so”, “the”, “till”, “to”, “up”, “via”, “with”,+-- and “yet”. titlecase :: [Inline] -> [Inline] titlecase zs = evalState (caseTransform tc zs) SentenceBoundary where tc (Str (x:xs)) = do st <- get return $ case st of- WordBoundary -> if isShortWord (x:xs) ||- not (isAscii x && isLetter x)- then Str (x:xs)- else Str (toUpper x : xs)- SentenceBoundary -> Str (toUpper x : xs)+ LastWordBoundary ->+ case (x:xs) of+ s | not (isAscii x) -> Str s+ | isShortWord s -> Str s+ | all isUpper s -> Str s+ | isMixedCase s -> Str s+ | otherwise -> Str (toUpper x:map toLower xs)+ WordBoundary ->+ case (x:xs) of+ s | not (isAscii x) -> Str s+ | all isUpper s -> Str s+ | isShortWord s -> Str (map toLower s)+ | isMixedCase s -> Str s+ | otherwise -> Str (toUpper x:map toLower xs)+ SentenceBoundary ->+ if isMixedCase (x:xs) || (all isUpper (x:xs))+ then Str (x:xs)+ else Str (toUpper x : xs) _ -> Str (x:xs) tc (Span ("",["nocase"],[]) xs) = return $ Span ("",["nocase"],[]) xs tc x = return x@@ -231,8 +261,14 @@ ,"in","into","nor","of","on","onto","or","over","so" ,"the","till","to","up","van","von","via","with","yet"] -data CaseTransformState = WordBoundary | SentenceBoundary | NoBoundary+isMixedCase :: String -> Bool+isMixedCase xs = any isUpper xs && any isLower xs +data CaseTransformState = WordBoundary+ | LastWordBoundary+ | SentenceBoundary+ | NoBoundary+ caseTransform :: (Inline -> State CaseTransformState Inline) -> [Inline] -> State CaseTransformState [Inline] caseTransform xform = fmap reverse . foldM go [] . splitUpStr@@ -261,6 +297,12 @@ res <- xform (Str xs) put NoBoundary return $ res : acc+ go acc (Span ("",["lastword"],[]) [x]) = do+ b <- get+ case b of+ WordBoundary -> put LastWordBoundary+ _ -> return ()+ go acc x go acc (Span ("",classes,[]) xs) | null classes || classes == ["nocase"] = do res <- xform (Span ("",classes,[]) xs)
stack.yaml view
@@ -7,11 +7,14 @@ debug: false packages: - '.'-- location:- git: https://github.com/jgm/pandoc.git- commit: fb8a2540bdb91eee0ecf620b4e9d7acf3d78042f+# - location:+# git: https://github.com/jgm/pandoc.git+# commit: 411434bf130a3116290c7ca54358678e03d0d92b+# extra-dep: true extra-deps:+- pandoc-1.19.1 - doctemplates-0.1.0.2 - pandoc-types-1.17.0.4 - texmath-0.9-resolver: lts-7.9+# - skylighting-0.1.1.2+resolver: lts-7.14
tests/issue13.expected.native view
@@ -1,3 +1,5 @@ Pandoc (Meta {unMeta = fromList [("csl",MetaInlines [Str "tests/chicago-note-bibliography.csl"]),("references",MetaList [MetaMap (fromList [("author",MetaMap (fromList [("family",MetaInlines [Str "Author"]),("given",MetaList [MetaInlines [Str "Ann"]])])),("container-title",MetaInlines [Str "Journal"]),("id",MetaInlines [Str "item1"]),("issued",MetaList [MetaMap (fromList [("year",MetaString "2011")])]),("title",MetaInlines [Str "Title"]),("type",MetaInlines [Str "article-newspaper"])])])]})-[Para [Str "Foo",Str ".",Cite [Citation {citationId = "item1", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 1}] [Note [Para [Str "Author",Str ",",Space,Str "\8220",Str "Title",Str ".",Str "\8221",Space]]],Str ""]-,Div ("refs",["references"],[]) [Div ("ref-item1",[],[]) [Para [Str "Author",Str ",",Space,Str "Ann",Str ".",Space,Str "\8220",Str "Title",Str ".",Str "\8221",Space,Emph [Str "Journal"],Str ",",Space,Str "2011",Str "."]]]]+[Para [Str "Foo",Str ".",Cite [Citation {citationId = "item1", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 1}] [Note [Para [Str "Author,",Space,Str "\8220Title.\8221"]]]]+,Div ("refs",["references"],[])+ [Div ("ref-item1",[],[])+ [Para [Str "Author,",Space,Str "Ann.",Space,Str "\8220Title.\8221",Space,Emph [Str "Journal"],Str ",",Space,Str "2011."]]]]
tests/issue175.expected.native view
@@ -1,7 +1,9 @@ Pandoc (Meta {unMeta = fromList [("references",MetaList [MetaMap (fromList [("author",MetaList [MetaMap (fromList [("family",MetaInlines [Str "Doe"]),("given",MetaInlines [Str "Jane"])])]),("container-title",MetaInlines [Str "A",Space,Str "magazine"]),("id",MetaInlines [Str "item1"]),("issued",MetaList [MetaMap (fromList [("month",MetaString "1"),("year",MetaString "2011")]),MetaMap (fromList [("month",MetaString "2"),("year",MetaString "2011")])]),("page",MetaInlines [Str "33-44"]),("title",MetaInlines [Str "A",Space,Str "title"]),("type",MetaInlines [Str "article-magazine"])])])]}) [Header 2 ("missing-en-dash-between-months",[],[]) [Str "Missing",Space,Str "en-dash",Space,Str "between",Space,Str "months"]-,Para [Str "Foo",Space,Cite [Citation {citationId = "item1", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 1}] [Str "(",Str "Doe",Space,Str "2011",Str ")"],Str "."]+,Para [Str "Foo",Space,Cite [Citation {citationId = "item1", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 1}] [Str "(Doe",Space,Str "2011)"],Str "."] ,Header 2 ("expected",[],[]) [Str "Expected"] ,BlockQuote [Para [Str "Doe,",Space,Str "Jane.",Space,Str "2011.",Space,Str "\8220A",Space,Str "Title.\8221",Space,Emph [Str "A",Space,Str "Magazine"],Str ",",Space,Str "January\8211February."]]-,Div ("refs",["references"],[]) [Div ("ref-item1",[],[]) [Para [Str "Doe",Str ",",Space,Str "Jane",Str ".",Space,Str "2011",Str ".",Space,Str "\8220",Str "A",Space,Str "Title",Str ".",Str "\8221",Space,Emph [Str "A",Space,Str "Magazine"],Str ",",Space,Str "January",Str "\8211",Str "February",Str "."]]]]+,Div ("refs",["references"],[])+ [Div ("ref-item1",[],[])+ [Para [Str "Doe,",Space,Str "Jane.",Space,Str "2011.",Space,Str "\8220A",Space,Str "Title.\8221",Space,Emph [Str "A",Space,Str "Magazine"],Str ",",Space,Str "January\8211February."]]]]
tests/issue197.expected.native view
@@ -1,5 +1,5 @@ Pandoc (Meta {unMeta = fromList [("csl",MetaInlines [Str "tests/chicago-fullnote-bibliography.csl"]),("nocite",MetaInlines [Cite [Citation {citationId = "test", citationPrefix = [], citationSuffix = [], citationMode = AuthorInText, citationNoteNum = 0, citationHash = 0}] [Str "@test"]]),("references",MetaList [MetaMap (fromList [("editor",MetaList [MetaMap (fromList [("family",MetaInlines [Str "Abelard"]),("given",MetaInlines [Str "Peter"])])]),("id",MetaInlines [Str "test"]),("issued",MetaMap (fromList [("date-parts",MetaList [MetaList [MetaString "1989"]])])),("publisher",MetaInlines [Str "Clarendon",Space,Str "Press"]),("publisher-place",MetaInlines [Str "Oxford"]),("title",MetaInlines [Str "Test"]),("type",MetaInlines [Str "book"])])])]})-[Para [Str "This",Space,Str "is",Space,Str "a",Space,Str "test",Str ".",Cite [Citation {citationId = "test", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 1}] [Note [Para [Str "Peter",Space,Str "Abelard",Str ",",Space,Str "ed.",Str ",",Space,Emph [Str "Test"],Space,Str "(",Str "Oxford",Str ":",Space,Str "Clarendon",Space,Str "Press",Str ",",Space,Str "1989",Str ")",Str ".",Space]]],Str ""]+[Para [Str "This",Space,Str "is",Space,Str "a",Space,Str "test",Str ".",Cite [Citation {citationId = "test", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 1}] [Note [Para [Str "Peter",Space,Str "Abelard,",Space,Str "ed.,",Space,Emph [Str "Test"],Space,Str "(Oxford:",Space,Str "Clarendon",Space,Str "Press,",Space,Str "1989)."]]]] ,Div ("refs",["references"],[]) [Div ("ref-test",[],[])- [Para [Str "Abelard",Str ",",Space,Str "Peter",Str ",",Space,Str "ed.",Space,Emph [Str "Test"],Str ".",Space,Str "Oxford",Str ":",Space,Str "Clarendon",Space,Str "Press",Str ",",Space,Str "1989",Str "."]]]]+ [Para [Str "Abelard,",Space,Str "Peter,",Space,Str "ed.",Space,Emph [Str "Test"],Str ".",Space,Str "Oxford:",Space,Str "Clarendon",Space,Str "Press,",Space,Str "1989."]]]]
tests/issue61.expected.native view
@@ -1,9 +1,13 @@ Pandoc (Meta {unMeta = fromList [("csl",MetaInlines [Str "tests/modern-humanities-research-association.csl"]),("references",MetaList [MetaMap (fromList [("author",MetaList [MetaMap (fromList [("family",MetaInlines [Str "Doe"]),("given",MetaInlines [Str "John"])])]),("id",MetaInlines [Str "doe"]),("issued",MetaMap (fromList [("date-parts",MetaList [MetaList [MetaString "1985"]])])),("publisher",MetaInlines [Str "Publisher"]),("title",MetaInlines [Str "Title"]),("type",MetaInlines [Str "book"])]),MetaMap (fromList [("author",MetaList [MetaMap (fromList [("family",MetaInlines [Str "Roe"]),("given",MetaInlines [Str "Rob"])])]),("id",MetaInlines [Str "roe"]),("issued",MetaMap (fromList [("date-parts",MetaList [MetaList [MetaString "1985"]])])),("publisher",MetaInlines [Str "Publisher"]),("title",MetaInlines [Str "Title"]),("type",MetaInlines [Str "book"])])])]}) [Header 1 ("text",[],[]) [Str "Text"]-,Para [Str "Foo",Cite [Citation {citationId = "doe", citationPrefix = [], citationSuffix = [Str ",",Space,Str "VIII,",Space,Str "89"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 1}] [Note [Para [Str "John",Space,Str "Doe,",Space,Emph [Str "Title"],Space,Str "(Publisher,",Space,Str "1985),",Space,Str "VIII,",Space,Str "89."]]]]-,Para [Str "Foo",Cite [Citation {citationId = "roe", citationPrefix = [], citationSuffix = [Str ",",Space,Str "III,",Space,Str "89"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 2}] [Note [Para [Str "Rob",Space,Str "Roe,",Space,Emph [Str "Title"],Space,Str "(Publisher,",Space,Str "1985),",Space,Str "III,",Space,Str "89."]]]]-,Para [Str "Foo",Cite [Citation {citationId = "doe", citationPrefix = [], citationSuffix = [Str ",",Space,Str "LVIII,",Space,Str "89"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 3}] [Note [Para [Str "Doe,",Space,Str "LVIII,",Space,Str "89."]]]]-,Para [Str "Foo",Cite [Citation {citationId = "roe", citationPrefix = [], citationSuffix = [Str ",",Space,Str "MVIII,",Space,Str "89"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 4}] [Note [Para [Str "Roe,",Space,Str "MVIII,",Space,Str "89."]]]]-,Para [Str "Foo",Cite [Citation {citationId = "doe", citationPrefix = [], citationSuffix = [Str ",",Space,Str "CL,",Space,Str "89"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 5}] [Note [Para [Str "Doe,",Space,Str "CL,",Space,Str "89."]]]]+,Para [Str "Foo",Str "",Cite [Citation {citationId = "doe", citationPrefix = [], citationSuffix = [Str ",",Space,Str "VIII,",Space,Str "89"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 1}] [Note [Para [Str "John",Space,Str "Doe,",Space,Emph [Str "Title"],Space,Str "(Publisher,",Space,Str "1985),",Space,Str "VIII,",Space,Str "89."]]]]+,Para [Str "Foo",Str "",Cite [Citation {citationId = "roe", citationPrefix = [], citationSuffix = [Str ",",Space,Str "III,",Space,Str "89"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 2}] [Note [Para [Str "Rob",Space,Str "Roe,",Space,Emph [Str "Title"],Space,Str "(Publisher,",Space,Str "1985),",Space,Str "III,",Space,Str "89."]]]]+,Para [Str "Foo",Str "",Cite [Citation {citationId = "doe", citationPrefix = [], citationSuffix = [Str ",",Space,Str "LVIII,",Space,Str "89"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 3}] [Note [Para [Str "Doe,",Space,Str "LVIII,",Space,Str "89."]]]]+,Para [Str "Foo",Str "",Cite [Citation {citationId = "roe", citationPrefix = [], citationSuffix = [Str ",",Space,Str "MVIII,",Space,Str "89"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 4}] [Note [Para [Str "Roe,",Space,Str "MVIII,",Space,Str "89."]]]]+,Para [Str "Foo",Str "",Cite [Citation {citationId = "doe", citationPrefix = [], citationSuffix = [Str ",",Space,Str "CL,",Space,Str "89"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 5}] [Note [Para [Str "Doe,",Space,Str "CL,",Space,Str "89."]]]] ,Header 1 ("references",["unnumbered"],[]) [Str "References"]-,Div ("refs",["references"],[]) [Div ("ref-doe",[],[]) [Para [Str "Doe,",Space,Str "John,",Space,Emph [Str "Title"],Space,Str "(Publisher,",Space,Str "1985)"]],Div ("ref-roe",[],[]) [Para [Str "Roe,",Space,Str "Rob,",Space,Emph [Str "Title"],Space,Str "(Publisher,",Space,Str "1985)"]]]]+,Div ("refs",["references"],[])+ [Div ("ref-doe",[],[])+ [Para [Str "Doe,",Space,Str "John,",Space,Emph [Str "Title"],Space,Str "(Publisher,",Space,Str "1985)"]]+ ,Div ("ref-roe",[],[])+ [Para [Str "Roe,",Space,Str "Rob,",Space,Emph [Str "Title"],Space,Str "(Publisher,",Space,Str "1985)"]]]]
tests/issue64.expected.native view
@@ -1,8 +1,8 @@ Pandoc (Meta {unMeta = fromList [("bibliography",MetaList [MetaInlines [Str "tests/biblio.bib"]]),("nocite",MetaInlines [Cite [Citation {citationId = "*", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 0}] [RawInline (Format "latex") "\\nocite{*}"]])]}) [Div ("refs",["references"],[]) [Div ("ref-item1",[],[])- [Para [Str "Doe",Str ",",Space,Str "John",Str ".",Space,Str "2005",Str ".",Space,Emph [Str "First",Space,Str "Book"],Str ".",Space,Str "Cambridge",Str ":",Space,Str "Cambridge",Space,Str "University",Space,Str "Press",Str "."]]+ [Para [Str "Doe,",Space,Str "John.",Space,Str "2005.",Space,Emph [Str "First",Space,Str "Book"],Str ".",Space,Str "Cambridge:",Space,Str "Cambridge",Space,Str "University",Space,Str "Press."]] ,Div ("ref-item2",[],[])- [Para [Str "\8212\8212\8212",Str ".",Space,Str "2006",Str ".",Space,Str "\8220",Str "Article",Str ".",Str "\8221",Space,Emph [Str "Journal",Space,Str "of",Space,Str "Generic",Space,Str "Studies"],Space,Str "6",Str ":",Space,Str "33\8211\&34",Str "."]]+ [Para [Str "\8212\8212\8212.",Space,Str "2006.",Space,Str "\8220Article.\8221",Space,Emph [Str "Journal",Space,Str "of",Space,Str "Generic",Space,Str "Studies"],Space,Str "6:",Space,Str "33\8211\&34."]] ,Div ("ref-\1087\1091\1085\1082\1090\&3",[],[])- [Para [Str "Doe",Str ",",Space,Str "John",Str ",",Space,Str "and",Space,Str "Jenny",Space,Str "Roe",Str ".",Space,Str "2007",Str ".",Space,Str "\8220",Str "Why",Space,Str "Water",Space,Str "Is",Space,Str "Wet",Str ".",Str "\8221",Space,Str "In",Space,Emph [Str "Third",Space,Str "Book"],Str ",",Space,Str "edited",Space,Str "by",Space,Str "Sam",Space,Str "Smith",Str ".",Space,Str "Oxford",Str ":",Space,Str "Oxford",Space,Str "University",Space,Str "Press",Str "."]]]]+ [Para [Str "Doe,",Space,Str "John,",Space,Str "and",Space,Str "Jenny",Space,Str "Roe.",Space,Str "2007.",Space,Str "\8220Why",Space,Str "Water",Space,Str "Is",Space,Str "Wet.\8221",Space,Str "In",Space,Emph [Str "Third",Space,Str "Book"],Str ",",Space,Str "edited",Space,Str "by",Space,Str "Sam",Space,Str "Smith.",Space,Str "Oxford:",Space,Str "Oxford",Space,Str "University",Space,Str "Press."]]]]
tests/issue68.expected.native view
@@ -1,3 +1,5 @@ Pandoc (Meta {unMeta = fromList [("csl",MetaInlines [Str "tests/chicago-fullnote-bibliography.csl"]),("references",MetaList [MetaMap (fromList [("ISBN",MetaInlines [Str "0888441088"]),("author",MetaList [MetaMap (fromList [("family",MetaInlines [Str "Goering"]),("given",MetaInlines [Str "Joseph"])])]),("call-number",MetaInlines [Str "BV4009",Space,Str ".W55",Space,Str "1992"]),("collection-number",MetaInlines [Str "108"]),("collection-title",MetaInlines [Str "Studies",Space,Str "and",Space,Str "Texts"]),("event-place",MetaInlines [Str "Toronto"]),("first-reference-note-number",MetaString "1"),("id",MetaInlines [Str "goering:1992william"]),("issued",MetaMap (fromList [("date-parts",MetaList [MetaList [MetaString "1992"]])])),("publisher",MetaInlines [Str "Pontifical",Space,Str "Institute",Space,Str "of",Space,Str "Mediaeval",Space,Str "Studies"]),("publisher-place",MetaInlines [Str "Toronto"]),("source",MetaInlines [Str "toroprod.library.utoronto.ca",Space,Str "Library",Space,Str "Catalog"]),("title",MetaInlines [Str "William",Space,Str "de",Space,Str "Montibus",Space,Str "(c.",Space,Str "1140\8211\&1213):",Space,Str "The",Space,Str "Schools",Space,Str "and",Space,Str "the",Space,Str "Literature",Space,Str "of",Space,Str "Pastoral",Space,Str "Care"]),("title-short",MetaInlines [Str "William",Space,Str "de",Space,Str "Montibus"]),("type",MetaInlines [Str "book"])])])]})-[Para [Str "...",Space,Str "a",Space,Str "prose",Space,Str "commentary",Str ".",Cite [Citation {citationId = "goering:1992william", citationPrefix = [Str "the",Space,Str "text",Space,Str "of",Space,Str "fol.",Space,Str "9r",Space,Str "is",Space,Str "printed",Space,Str "in"], citationSuffix = [Str ",",Space,Str "pp.",Space,Str "501\8211\&3"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 1}] [Note [Para [Str "The",Space,Str "text",Space,Str "of",Space,Str "fol.",Space,Str "9r",Space,Str "is",Space,Str "printed",Space,Str "in",Space,Str "Joseph",Space,Str "Goering",Str ",",Space,Emph [Str "William",Space,Str "de",Space,Str "Montibus",Space,Str "(",Str "c",Str ".",Space,Str "1140",Str "\8211",Str "1213",Str ")",Str ":",Space,Str "The",Space,Str "Schools",Space,Str "and",Space,Str "the",Space,Str "Literature",Space,Str "of",Space,Str "Pastoral",Space,Str "Care"],Str ",",Space,Str "Studies",Space,Str "and",Space,Str "Texts",Space,Str "108",Space,Str "(",Str "Toronto",Str ":",Space,Str "Pontifical",Space,Str "Institute",Space,Str "of",Space,Str "Mediaeval",Space,Str "Studies",Str ",",Space,Str "1992",Str ")",Str ",",Space,Str "501\8211\&3",Str ".",Space]]],Str "",Space,Str "...",Space,Str "a",Space,Str "collection",Space,Str "of",Space,Str "verses",Space,Str "with",Space,Str "a",Space,Str "formal",Space,Str "prose",Space,Str "commentary",Cite [Citation {citationId = "goering:1992william", citationPrefix = [Str "excerpts",Space,Str "from",Space,Str "this",Space,Str "text",Space,Str "were",Space,Str "previously",Space,Str "printed",Space,Str "in"], citationSuffix = [Str ",",Space,Str "p.",Space,Str "508\8211\&14"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 2},Citation {citationId = "goering:1992william", citationPrefix = [Str "it",Space,Str "was",Space,Str "also",Space,Str "briefly",Space,Str "described",Space,Str "in"], citationSuffix = [Str ",",Space,Str "pp.",Space,Str "141\8211\&42"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 3}] [Note [Para [Str "Excerpts",Space,Str "from",Space,Str "this",Space,Str "text",Space,Str "were",Space,Str "previously",Space,Str "printed",Space,Str "in",Space,Str "ibid.",Str ",",Space,Str "508\8211\&14",Str ";",Space,Str "it",Space,Str "was",Space,Str "also",Space,Str "briefly",Space,Str "described",Space,Str "in",Space,Str "ibid.",Str ",",Space,Str "141\8211\&42",Str ".",Space]]],Space,Str "...",Space,Str "and",Space,Str "finally",Space,Str "a",Space,Str "note",Space,Str "starting",Space,Str "with",Space,Str "a",Space,Str "citation",Str ".",Cite [Citation {citationId = "goering:1992william", citationPrefix = [], citationSuffix = [Str ",",Space,Str "pp.",Space,Str "141-42"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 4}] [Note [Para [Str "Ibid.",Str ",",Space,Str "141\8211\&42",Str ".",Space]]],Str ""]-,Div ("refs",["references"],[]) [Div ("ref-goering:1992william",[],[]) [Para [Str "Goering",Str ",",Space,Str "Joseph",Str ".",Space,Emph [Str "William",Space,Str "de",Space,Str "Montibus",Space,Str "(",Str "c",Str ".",Space,Str "1140",Str "\8211",Str "1213",Str ")",Str ":",Space,Str "The",Space,Str "Schools",Space,Str "and",Space,Str "the",Space,Str "Literature",Space,Str "of",Space,Str "Pastoral",Space,Str "Care"],Str ".",Space,Str "Studies",Space,Str "and",Space,Str "Texts",Space,Str "108",Str ".",Space,Str "Toronto",Str ":",Space,Str "Pontifical",Space,Str "Institute",Space,Str "of",Space,Str "Mediaeval",Space,Str "Studies",Str ",",Space,Str "1992",Str "."]]]]+[Para [Str "...",Space,Str "a",Space,Str "prose",Space,Str "commentary",Str ".",Cite [Citation {citationId = "goering:1992william", citationPrefix = [Str "the",Space,Str "text",Space,Str "of",Space,Str "fol.",Space,Str "9r",Space,Str "is",Space,Str "printed",Space,Str "in"], citationSuffix = [Str ",",Space,Str "pp.",Space,Str "501\8211\&3"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 1}] [Note [Para [Str "The",Space,Str "text",Space,Str "of",Space,Str "fol.",Space,Str "9r",Space,Str "is",Space,Str "printed",Space,Str "in",Space,Str "Joseph",Space,Str "Goering,",Space,Emph [Str "William",Space,Str "de",Space,Str "Montibus",Space,Str "(c.",Space,Str "1140\8211\&1213):",Space,Str "The",Space,Str "Schools",Space,Str "and",Space,Str "the",Space,Str "Literature",Space,Str "of",Space,Str "Pastoral",Space,Str "Care"],Str ",",Space,Str "Studies",Space,Str "and",Space,Str "Texts",Space,Str "108",Space,Str "(Toronto:",Space,Str "Pontifical",Space,Str "Institute",Space,Str "of",Space,Str "Mediaeval",Space,Str "Studies,",Space,Str "1992),",Space,Str "501\8211\&3."]]],Space,Str "...",Space,Str "a",Space,Str "collection",Space,Str "of",Space,Str "verses",Space,Str "with",Space,Str "a",Space,Str "formal",Space,Str "prose",Space,Str "commentary",Cite [Citation {citationId = "goering:1992william", citationPrefix = [Str "excerpts",Space,Str "from",Space,Str "this",Space,Str "text",Space,Str "were",Space,Str "previously",Space,Str "printed",Space,Str "in"], citationSuffix = [Str ",",Space,Str "p.",Space,Str "508\8211\&14"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 2},Citation {citationId = "goering:1992william", citationPrefix = [Str "it",Space,Str "was",Space,Str "also",Space,Str "briefly",Space,Str "described",Space,Str "in"], citationSuffix = [Str ",",Space,Str "pp.",Space,Str "141\8211\&42"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 3}] [Note [Para [Str "Excerpts",Space,Str "from",Space,Str "this",Space,Str "text",Space,Str "were",Space,Str "previously",Space,Str "printed",Space,Str "in",Space,Str "ibid.,",Space,Str "508\8211\&14;",Space,Str "it",Space,Str "was",Space,Str "also",Space,Str "briefly",Space,Str "described",Space,Str "in",Space,Str "ibid.,",Space,Str "141\8211\&42."]]],Space,Str "...",Space,Str "and",Space,Str "finally",Space,Str "a",Space,Str "note",Space,Str "starting",Space,Str "with",Space,Str "a",Space,Str "citation",Str ".",Cite [Citation {citationId = "goering:1992william", citationPrefix = [], citationSuffix = [Str ",",Space,Str "pp.",Space,Str "141-42"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 4}] [Note [Para [Str "Ibid.,",Space,Str "141\8211\&42."]]]]+,Div ("refs",["references"],[])+ [Div ("ref-goering:1992william",[],[])+ [Para [Str "Goering,",Space,Str "Joseph.",Space,Emph [Str "William",Space,Str "de",Space,Str "Montibus",Space,Str "(c.",Space,Str "1140\8211\&1213):",Space,Str "The",Space,Str "Schools",Space,Str "and",Space,Str "the",Space,Str "Literature",Space,Str "of",Space,Str "Pastoral",Space,Str "Care"],Str ".",Space,Str "Studies",Space,Str "and",Space,Str "Texts",Space,Str "108.",Space,Str "Toronto:",Space,Str "Pontifical",Space,Str "Institute",Space,Str "of",Space,Str "Mediaeval",Space,Str "Studies,",Space,Str "1992."]]]]
tests/issue77.expected.native view
@@ -1,3 +1,13 @@ Pandoc (Meta {unMeta = fromList [("csl",MetaInlines [Str "tests/chicago-fullnote-bibliography.csl"]),("references",MetaList [MetaMap (fromList [("author",MetaList [MetaMap (fromList [("family",MetaInlines [Str "Doe"]),("given",MetaInlines [Str "John,",Space,Str "III"]),("parse-names",MetaBool True)])]),("id",MetaInlines [Str "item1"]),("type",MetaInlines [Str "book"])]),MetaMap (fromList [("author",MetaList [MetaMap (fromList [("family",MetaInlines [Str "van",Space,Str "Gogh"]),("given",MetaInlines [Str "Vincent"]),("parse-names",MetaBool True)])]),("id",MetaInlines [Str "item2"]),("type",MetaInlines [Str "book"])]),MetaMap (fromList [("author",MetaList [MetaMap (fromList [("family",MetaInlines [Str "Humboldt"]),("given",MetaInlines [Str "Alexander",Space,Str "von"]),("parse-names",MetaBool True)])]),("id",MetaInlines [Str "item3"]),("type",MetaInlines [Str "book"])]),MetaMap (fromList [("author",MetaList [MetaMap (fromList [("family",MetaInlines [Str "Bennett"]),("given",MetaInlines [Str "Frank",Space,Str "G.,!",Space,Str "Jr."]),("parse-names",MetaBool True)])]),("id",MetaInlines [Str "item4"]),("type",MetaInlines [Str "book"])]),MetaMap (fromList [("author",MetaList [MetaMap (fromList [("family",MetaInlines [Str "Dumboldt"]),("given",MetaInlines [Str "Ezekiel,",Space,Str "III"]),("parse-names",MetaBool True)])]),("id",MetaInlines [Str "item5"]),("type",MetaInlines [Str "book"])])])]})-[Para [Cite [Citation {citationId = "item1", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 1},Citation {citationId = "item2", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 2},Citation {citationId = "item3", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 3},Citation {citationId = "item4", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 4},Citation {citationId = "item5", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 5}] [Note [Para [Str "John",Space,Str "Doe",Space,Str "III",Str ",",Space,Str "n.d.",Str ";",Space,Str "Vincent",Space,Str "van",Space,Str "G",Str "ogh",Str ",",Space,Str "n.d.",Str ";",Space,Str "Alexander",Space,Str "von",Space,Str "Humboldt",Str ",",Space,Str "n.d.",Str ";",Space,Str "Frank",Space,Str "G",Str ".",Space,Str "Bennett",Str ",",Space,Str "Jr.",Str ",",Space,Str "n.d.",Str ";",Space,Str "Ezekiel",Space,Str "Dumboldt",Space,Str "III",Str ",",Space,Str "n.d.",Space]]]]-,Div ("refs",["references"],[]) [Div ("ref-item4",[],[]) [Para [Str "Bennett",Str ",",Space,Str "Frank",Space,Str "G",Str ".",Str ",",Space,Str "Jr.",Str ",",Space,Str "n.d."]],Div ("ref-item1",[],[]) [Para [Str "Doe",Str ",",Space,Str "John",Str ",",Space,Str "III",Str ",",Space,Str "n.d."]],Div ("ref-item5",[],[]) [Para [Str "Dumboldt",Str ",",Space,Str "Ezekiel",Str ",",Space,Str "III",Str ",",Space,Str "n.d."]],Div ("ref-item3",[],[]) [Para [Str "Humboldt",Str ",",Space,Str "Alexander",Space,Str "von",Str ",",Space,Str "n.d."]],Div ("ref-item2",[],[]) [Para [Str "van",Space,Str "G",Str "ogh",Str ",",Space,Str "Vincent",Str ",",Space,Str "n.d."]]]]+[Para [Cite [Citation {citationId = "item1", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 1},Citation {citationId = "item2", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 2},Citation {citationId = "item3", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 3},Citation {citationId = "item4", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 4},Citation {citationId = "item5", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 5}] [Note [Para [Str "John",Space,Str "Doe",Space,Str "III,",Space,Str "n.d.;",Space,Str "Vincent",Space,Str "van",Space,Str "Gogh,",Space,Str "n.d.;",Space,Str "Alexander",Space,Str "von",Space,Str "Humboldt,",Space,Str "n.d.;",Space,Str "Frank",Space,Str "G.",Space,Str "Bennett,",Space,Str "Jr.,",Space,Str "n.d.;",Space,Str "Ezekiel",Space,Str "Dumboldt",Space,Str "III,",Space,Str "n.d."]]]]+,Div ("refs",["references"],[])+ [Div ("ref-item4",[],[])+ [Para [Str "Bennett,",Space,Str "Frank",Space,Str "G.,",Space,Str "Jr.,",Space,Str "n.d."]]+ ,Div ("ref-item1",[],[])+ [Para [Str "Doe,",Space,Str "John,",Space,Str "III,",Space,Str "n.d."]]+ ,Div ("ref-item5",[],[])+ [Para [Str "Dumboldt,",Space,Str "Ezekiel,",Space,Str "III,",Space,Str "n.d."]]+ ,Div ("ref-item3",[],[])+ [Para [Str "Humboldt,",Space,Str "Alexander",Space,Str "von,",Space,Str "n.d."]]+ ,Div ("ref-item2",[],[])+ [Para [Str "van",Space,Str "Gogh,",Space,Str "Vincent,",Space,Str "n.d."]]]]
tests/issue82.expected.native view
@@ -1,4 +1,6 @@ Pandoc (Meta {unMeta = fromList [("csl",MetaInlines [Str "tests/chicago-annotated-bibliography.csl"]),("references",MetaList [MetaMap (fromList [("URL",MetaInlines [Str "https://www.worldcat.org/"]),("accessed",MetaMap (fromList [("date-parts",MetaList [MetaList [MetaString "2014",MetaString "9",MetaString "19"]])])),("author",MetaList [MetaMap (fromList [("literal",MetaInlines [Str "OCLC"])])]),("first-reference-note-number",MetaString "1"),("id",MetaInlines [Str "OCLC_i1099"]),("title",MetaInlines [Str "WorldCat"]),("type",MetaInlines [Str "webpage"])])])]}) [Header 1 ("title",[],[]) [Str "Title"]-,Para [Str "Some",Space,Str "text.",Note [Para [Str "Comment",Space,Str "regarding",Space,Str "text,",Space,Str "supported",Space,Str "by",Space,Str "citation",Space,Cite [Citation {citationId = "OCLC_i1099", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 1}] [Str "OCLC",Str ",",Space,Str "\8220",Str "WorldCat",Str ".",Str "\8221"]]]]-,Div ("refs",["references"],[]) [Div ("ref-OCLC_i1099",[],[]) [Para [Str "OCLC",Str ".",Space,Str "\8220",Str "WorldCat",Str ".",Str "\8221",Space,Str "Accessed",Space,Str "September",Space,Str "19",Str ",",Space,Str "2014",Str ".",Space,Link ("",[],[]) [Str "https://www.worldcat.org/"] ("https://www.worldcat.org/",""),Str "."]]]]+,Para [Str "Some",Space,Str "text.",Note [Para [Str "Comment",Space,Str "regarding",Space,Str "text,",Space,Str "supported",Space,Str "by",Space,Str "citation",Space,Cite [Citation {citationId = "OCLC_i1099", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 1}] [Str "OCLC,",Space,Str "\8220WorldCat.\8221"]]]]+,Div ("refs",["references"],[])+ [Div ("ref-OCLC_i1099",[],[])+ [Para [Str "OCLC.",Space,Str "\8220WorldCat.\8221",Space,Str "Accessed",Space,Str "September",Space,Str "19,",Space,Str "2014.",Space,Link ("",[],[]) [Str "https://www.worldcat.org/"] ("https://www.worldcat.org/",""),Str "."]]]]
tests/mhra.expected.native view
@@ -2,17 +2,23 @@ [Header 1 ("pandoc-with-citeproc-hs",[],[]) [Str "Pandoc",Space,Str "with",Space,Str "citeproc-hs"] ,Para [Cite [Citation {citationId = "nonexistent", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 1}] [Note [Para [Span ("",["citeproc-not-found"],[("data-reference-id","nonexistent")]) [Strong [Str "???"]]]]]] ,Para [Cite [Citation {citationId = "nonexistent", citationPrefix = [], citationSuffix = [], citationMode = AuthorInText, citationNoteNum = 0, citationHash = 2}] [Note [Para [Span ("",["citeproc-not-found"],[("data-reference-id","nonexistent")]) [Strong [Str "???"]]]]]]-,Para [Cite [Citation {citationId = "item1", citationPrefix = [], citationSuffix = [], citationMode = AuthorInText, citationNoteNum = 0, citationHash = 3}] [Str "John",Space,Str "Doe.",Note [Para [Emph [Str "First",Space,Str "Book"],Space,Str "(Cambridge:",Space,Str "Cambridge",Space,Str "University",Space,Str "Press,",Space,Str "2005)."]]]]+,Para [Cite [Citation {citationId = "item1", citationPrefix = [], citationSuffix = [], citationMode = AuthorInText, citationNoteNum = 0, citationHash = 3}] [Str "John",Space,Str "Doe",Str ".",Note [Para [Emph [Str "First",Space,Str "Book"],Space,Str "(Cambridge:",Space,Str "Cambridge",Space,Str "University",Space,Str "Press,",Space,Str "2005)."]]]] ,Para [Cite [Citation {citationId = "item1", citationPrefix = [], citationSuffix = [Str "p.",Space,Str "30"], citationMode = AuthorInText, citationNoteNum = 0, citationHash = 4}] [Str "Doe",Note [Para [Emph [Str "First",Space,Str "Book"],Str ",",Space,Str "p.",Space,Str "30."]]],Space,Str "says",Space,Str "blah."] ,Para [Cite [Citation {citationId = "item1", citationPrefix = [], citationSuffix = [Str "p.",Space,Str "30,",Space,Str "with",Space,Str "suffix"], citationMode = AuthorInText, citationNoteNum = 0, citationHash = 5}] [Str "Doe",Note [Para [Emph [Str "First",Space,Str "Book"],Str ",",Space,Str "p.",Space,Str "30,",Space,Str "with",Space,Str "suffix."]]],Space,Str "says",Space,Str "blah."] ,Para [Cite [Citation {citationId = "item1", citationPrefix = [], citationSuffix = [], citationMode = AuthorInText, citationNoteNum = 0, citationHash = 6},Citation {citationId = "item2", citationPrefix = [], citationSuffix = [Space,Str "p.",Space,Str "30"], citationMode = SuppressAuthor, citationNoteNum = 0, citationHash = 7},Citation {citationId = "\1087\1091\1085\1082\1090\&3", citationPrefix = [Str "see",Space,Str "also"], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 8}] [Str "Doe",Note [Para [Emph [Str "First",Space,Str "Book"],Str ";",Space,Str "\8216Article\8217,",Space,Emph [Str "Journal",Space,Str "of",Space,Str "Generic",Space,Str "Studies"],Str ",",Space,Str "6",Space,Str "(2006),",Space,Str "33\8211\&34",Space,Str "(p.",Space,Str "30);",Space,Str "see",Space,Str "also",Space,Str "John",Space,Str "Doe",Space,Str "and",Space,Str "Jenny",Space,Str "Roe,",Space,Str "\8216Why",Space,Str "Water",Space,Str "Is",Space,Str "Wet\8217,",Space,Str "in",Space,Emph [Str "Third",Space,Str "Book"],Str ",",Space,Str "ed.",Space,Str "by",Space,Str "Sam",Space,Str "Smith",Space,Str "(Oxford:",Space,Str "Oxford",Space,Str "University",Space,Str "Press,",Space,Str "2007)."]]],Space,Str "says",Space,Str "blah."]-,Para [Str "In",Space,Str "a",Space,Str "note.",Note [Para [Cite [Citation {citationId = "\1087\1091\1085\1082\1090\&3", citationPrefix = [], citationSuffix = [Str "p.",Space,Str "12"], citationMode = AuthorInText, citationNoteNum = 0, citationHash = 9}] [Str "Doe",Space,Str "and",Space,Str "Roe,",Space,Str "p.",Space,Str "12"],Space,Str "and",Space,Str "a",Space,Str "citation",Space,Str "without",Space,Str "locators",Space,Cite [Citation {citationId = "\1087\1091\1085\1082\1090\&3", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 10}] [Str "Doe",Space,Str "and",Space,Str "Roe"],Str "."]]]-,Para [Str "A",Space,Str "citation",Space,Str "group.",Cite [Citation {citationId = "item1", citationPrefix = [Str "see"], citationSuffix = [Space,Str "chap.",Space,Str "3"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 11},Citation {citationId = "\1087\1091\1085\1082\1090\&3", citationPrefix = [Str "also"], citationSuffix = [Space,Str "p.",Space,Str "34-35"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 12}] [Note [Para [Str "See",Space,Str "Doe,",Space,Emph [Str "First",Space,Str "Book"],Str ",",Space,Str "chap.",Space,Str "3;",Space,Str "also",Space,Str "Doe",Space,Str "and",Space,Str "Roe,",Space,Str "pp.",Space,Str "34\8211\&35."]]]]-,Para [Str "Another",Space,Str "one.",Cite [Citation {citationId = "item1", citationPrefix = [Str "see"], citationSuffix = [Space,Str "p.",Space,Str "34-35"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 13}] [Note [Para [Str "See",Space,Str "Doe,",Space,Emph [Str "First",Space,Str "Book"],Str ",",Space,Str "pp.",Space,Str "34\8211\&35."]]]]+,Para [Str "In",Space,Str "a",Space,Str "note.",Note [Para [Cite [Citation {citationId = "\1087\1091\1085\1082\1090\&3", citationPrefix = [], citationSuffix = [Str "p.",Space,Str "12"], citationMode = AuthorInText, citationNoteNum = 0, citationHash = 9}] [Str "Doe",Space,Str "and",Space,Str "Roe",Str ",",Space,Str "p.",Space,Str "12"],Space,Str "and",Space,Str "a",Space,Str "citation",Space,Str "without",Space,Str "locators",Space,Cite [Citation {citationId = "\1087\1091\1085\1082\1090\&3", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 10}] [Str "Doe",Space,Str "and",Space,Str "Roe"],Str "."]]]+,Para [Str "A",Space,Str "citation",Space,Str "group",Str ".",Cite [Citation {citationId = "item1", citationPrefix = [Str "see"], citationSuffix = [Space,Str "chap.",Space,Str "3"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 11},Citation {citationId = "\1087\1091\1085\1082\1090\&3", citationPrefix = [Str "also"], citationSuffix = [Space,Str "p.",Space,Str "34-35"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 12}] [Note [Para [Str "See",Space,Str "Doe,",Space,Emph [Str "First",Space,Str "Book"],Str ",",Space,Str "chap.",Space,Str "3;",Space,Str "also",Space,Str "Doe",Space,Str "and",Space,Str "Roe,",Space,Str "pp.",Space,Str "34\8211\&35."]]]]+,Para [Str "Another",Space,Str "one",Str ".",Cite [Citation {citationId = "item1", citationPrefix = [Str "see"], citationSuffix = [Space,Str "p.",Space,Str "34-35"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 13}] [Note [Para [Str "See",Space,Str "Doe,",Space,Emph [Str "First",Space,Str "Book"],Str ",",Space,Str "pp.",Space,Str "34\8211\&35."]]]] ,Para [Str "And",Space,Str "another",Space,Str "one",Space,Str "in",Space,Str "a",Space,Str "note.",Note [Para [Str "Some",Space,Str "citations",Space,Cite [Citation {citationId = "item1", citationPrefix = [Str "see"], citationSuffix = [Space,Str "chap.",Space,Str "3"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 14},Citation {citationId = "\1087\1091\1085\1082\1090\&3", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 15},Citation {citationId = "item2", citationPrefix = [], citationSuffix = [], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 16}] [Str "see",Space,Str "Doe,",Space,Emph [Str "First",Space,Str "Book"],Str ",",Space,Str "chap.",Space,Str "3;",Space,Str "Doe",Space,Str "and",Space,Str "Roe;",Space,Str "Doe,",Space,Str "\8216Article\8217,",Space,Str "33\8211\&34"],Str "."]]]-,Para [Str "Citation",Space,Str "with",Space,Str "a",Space,Str "suffix",Space,Str "and",Space,Str "locator.",Cite [Citation {citationId = "item1", citationPrefix = [], citationSuffix = [Space,Str "pp.",Space,Str "33,",Space,Str "35-37,",Space,Str "and",Space,Str "nowhere",Space,Str "else"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 17}] [Note [Para [Str "Doe,",Space,Emph [Str "First",Space,Str "Book"],Str ",",Space,Str "pp.",Space,Str "33,",Space,Str "35\8211\&37,",Space,Str "and",Space,Str "nowhere",Space,Str "else."]]]]-,Para [Str "Citation",Space,Str "with",Space,Str "suffix",Space,Str "only.",Cite [Citation {citationId = "item1", citationPrefix = [], citationSuffix = [Space,Str "and",Space,Str "nowhere",Space,Str "else"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 18}] [Note [Para [Str "Doe,",Space,Emph [Str "First",Space,Str "Book"],Space,Str "and",Space,Str "nowhere",Space,Str "else."]]]]-,Para [Str "Now",Space,Str "some",Space,Str "modifiers.",Note [Para [Str "Like",Space,Str "a",Space,Str "citation",Space,Str "without",Space,Str "author:",Space,Cite [Citation {citationId = "item1", citationPrefix = [], citationSuffix = [], citationMode = SuppressAuthor, citationNoteNum = 0, citationHash = 19}] [Emph [Str "First",Space,Str "Book"]],Str ",",Space,Str "and",Space,Str "now",Space,Str "Doe",Space,Str "with",Space,Str "a",Space,Str "locator",Space,Cite [Citation {citationId = "item2", citationPrefix = [], citationSuffix = [Space,Str "p.",Space,Str "44"], citationMode = SuppressAuthor, citationNoteNum = 0, citationHash = 20}] [Str "\8216Article\8217,",Space,Str "33\8211\&34",Space,Str "(p.",Space,Str "44)"],Str "."]]]-,Para [Str "With",Space,Str "some",Space,Str "markup.",Cite [Citation {citationId = "item1", citationPrefix = [Emph [Str "see"]], citationSuffix = [Space,Str "p.",Space,Strong [Str "32"]], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 21}] [Note [Para [Emph [Str "See"],Space,Str "Doe,",Space,Emph [Str "First",Space,Str "Book"],Str ",",Space,Str "p.",Space,Str "32."]]]]+,Para [Str "Citation",Space,Str "with",Space,Str "a",Space,Str "suffix",Space,Str "and",Space,Str "locator",Str ".",Cite [Citation {citationId = "item1", citationPrefix = [], citationSuffix = [Space,Str "pp.",Space,Str "33,",Space,Str "35-37,",Space,Str "and",Space,Str "nowhere",Space,Str "else"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 17}] [Note [Para [Str "Doe,",Space,Emph [Str "First",Space,Str "Book"],Str ",",Space,Str "pp.",Space,Str "33,",Space,Str "35\8211\&37,",Space,Str "and",Space,Str "nowhere",Space,Str "else."]]]]+,Para [Str "Citation",Space,Str "with",Space,Str "suffix",Space,Str "only",Str ".",Cite [Citation {citationId = "item1", citationPrefix = [], citationSuffix = [Space,Str "and",Space,Str "nowhere",Space,Str "else"], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 18}] [Note [Para [Str "Doe,",Space,Emph [Str "First",Space,Str "Book"],Space,Str "and",Space,Str "nowhere",Space,Str "else."]]]]+,Para [Str "Now",Space,Str "some",Space,Str "modifiers.",Note [Para [Str "Like",Space,Str "a",Space,Str "citation",Space,Str "without",Space,Str "author:",Space,Cite [Citation {citationId = "item1", citationPrefix = [], citationSuffix = [], citationMode = SuppressAuthor, citationNoteNum = 0, citationHash = 19}] [Emph [Str "First",Space,Str "Book"],Str ""],Str ",",Space,Str "and",Space,Str "now",Space,Str "Doe",Space,Str "with",Space,Str "a",Space,Str "locator",Space,Cite [Citation {citationId = "item2", citationPrefix = [], citationSuffix = [Space,Str "p.",Space,Str "44"], citationMode = SuppressAuthor, citationNoteNum = 0, citationHash = 20}] [Str "\8216Article\8217,",Space,Str "33\8211\&34",Space,Str "(p.",Space,Str "44)"],Str "."]]]+,Para [Str "With",Space,Str "some",Space,Str "markup",Str ".",Cite [Citation {citationId = "item1", citationPrefix = [Emph [Str "see"]], citationSuffix = [Space,Str "p.",Space,Strong [Str "32"]], citationMode = NormalCitation, citationNoteNum = 0, citationHash = 21}] [Note [Para [Emph [Str "See"],Space,Str "Doe,",Space,Emph [Str "First",Space,Str "Book"],Str ",",Space,Str "p.",Space,Str "32."]]]] ,Header 1 ("references",["unnumbered"],[]) [Str "References"]-,Div ("refs",["references"],[]) [Div ("ref-item2",[],[]) [Para [Str "Doe,",Space,Str "John,",Space,Str "\8216Article\8217,",Space,Emph [Str "Journal",Space,Str "of",Space,Str "Generic",Space,Str "Studies"],Str ",",Space,Str "6",Space,Str "(2006),",Space,Str "33\8211\&34."]],Div ("ref-item1",[],[]) [Para [Str "---,",Space,Emph [Str "First",Space,Str "Book"],Space,Str "(Cambridge:",Space,Str "Cambridge",Space,Str "University",Space,Str "Press,",Space,Str "2005)."]],Div ("ref-\1087\1091\1085\1082\1090\&3",[],[]) [Para [Str "Doe,",Space,Str "John,",Space,Str "and",Space,Str "Jenny",Space,Str "Roe,",Space,Str "\8216Why",Space,Str "Water",Space,Str "Is",Space,Str "Wet\8217,",Space,Str "in",Space,Emph [Str "Third",Space,Str "Book"],Str ",",Space,Str "ed.",Space,Str "by",Space,Str "Sam",Space,Str "Smith",Space,Str "(Oxford:",Space,Str "Oxford",Space,Str "University",Space,Str "Press,",Space,Str "2007)."]]]]+,Div ("refs",["references"],[])+ [Div ("ref-item2",[],[])+ [Para [Str "Doe,",Space,Str "John,",Space,Str "\8216Article\8217,",Space,Emph [Str "Journal",Space,Str "of",Space,Str "Generic",Space,Str "Studies"],Str ",",Space,Str "6",Space,Str "(2006),",Space,Str "33\8211\&34."]]+ ,Div ("ref-item1",[],[])+ [Para [Str "---,",Space,Emph [Str "First",Space,Str "Book"],Space,Str "(Cambridge:",Space,Str "Cambridge",Space,Str "University",Space,Str "Press,",Space,Str "2005)."]]+ ,Div ("ref-\1087\1091\1085\1082\1090\&3",[],[])+ [Para [Str "Doe,",Space,Str "John,",Space,Str "and",Space,Str "Jenny",Space,Str "Roe,",Space,Str "\8216Why",Space,Str "Water",Space,Str "Is",Space,Str "Wet\8217,",Space,Str "in",Space,Emph [Str "Third",Space,Str "Book"],Str ",",Space,Str "ed.",Space,Str "by",Space,Str "Sam",Space,Str "Smith",Space,Str "(Oxford:",Space,Str "Oxford",Space,Str "University",Space,Str "Press,",Space,Str "2007)."]]]]
tests/test-citeproc.hs view
@@ -1,33 +1,26 @@ {-# LANGUAGE OverloadedStrings, TypeSynonymInstances, FlexibleInstances, ScopedTypeVariables #-}-import JSON import Text.Printf import System.Exit import qualified Control.Exception as E-import Text.Pandoc+import Text.Pandoc hiding (writeHtmlString)+import Text.CSL.Compat.Pandoc (writeHtmlString) import Data.Char (isSpace, toLower) import System.Environment (getArgs) import System.Process import System.IO.Temp (withSystemTempDirectory) import Text.Pandoc.Definition (Inline(Span, Str))-import Text.Pandoc.Generic-import Text.Pandoc.Walk import qualified Text.Pandoc.UTF8 as UTF8-import Data.Maybe (mapMaybe) import Data.Aeson-import Data.Aeson.Types (Parser) import System.FilePath import System.Directory-import Data.List (intercalate, sort, isInfixOf)+import Data.List (sort, isInfixOf) import qualified Data.Vector as V import qualified Data.Map as M-import qualified Data.Text as T-import qualified Data.Text.Encoding as T import Text.CSL.Style hiding (Number) import Text.CSL.Reference import Text.CSL import Control.Monad-import Control.Applicative import qualified Data.ByteString.Lazy as BL data TestCase = TestCase{@@ -60,7 +53,7 @@ v .:? "bibsection" .!= Select [] [] <*> v .:? "citations" .!= [] <*> v .:? "citation_items" .!= [] <*>- v .: "csl" <*>+ (parseCSL <$> (v .: "csl")) <*> v .:? "abbreviations" .!= (Abbreviations M.empty) <*> v .: "input" <*> v .: "result"@@ -92,16 +85,16 @@ testDir :: FilePath testDir = "citeproc-test" </> "processor-tests" </> "machines" -handleError :: FilePath -> E.SomeException -> IO TestResult-handleError path e = do+handler :: FilePath -> E.SomeException -> IO TestResult+handler path e = do putStrLn $ "[ERROR] " ++ path ++ "\n" ++ show e return Errored runTest :: FilePath -> IO TestResult-runTest path = E.handle (handleError path) $ do+runTest path = E.handle (handler path) $ do raw <- BL.readFile path let testCase = either error id $ eitherDecode raw- let procOpts = ProcOpts (testBibopts testCase) False+ let procOpts' = ProcOpts (testBibopts testCase) False style <- localizeCSL Nothing $ (testCsl testCase) { styleAbbrevs = testAbbreviations testCase } let refs = testReferences testCase@@ -127,7 +120,7 @@ let result = assemble mode $ map (inlinesToString . renderPandoc style) $ (case mode of {CitationMode -> citations; _ -> bibliography})- $ citeproc procOpts style refs cites'+ $ citeproc procOpts' style refs cites' if result == expected then do putStrLn $ "[PASSED] " ++ path ++ "\n"
tests/test-pandoc-citeproc.hs view
@@ -1,7 +1,5 @@ {-# LANGUAGE CPP #-} module Main where-import JSON-import System.Process import System.Exit import System.Directory import System.FilePath@@ -10,18 +8,12 @@ import Data.Monoid (mempty) import System.IO.Temp (withSystemTempDirectory) import System.Process (rawSystem)-import Text.Printf import qualified Data.Aeson as Aeson import Text.Pandoc.Definition-import qualified Data.ByteString.Lazy.Char8 as BL-import qualified Data.ByteString.Char8 as B import qualified Text.Pandoc.UTF8 as UTF8-import Text.Pandoc.Shared (normalize)-import Text.Pandoc.Process (pipeProcess) import Text.Pandoc.Options (WriterOptions(..))-import qualified Data.Yaml as Yaml-import Text.Pandoc (writeNative, writeHtmlString, readNative, def)-import Text.CSL.Pandoc (processCites')+import Text.CSL.Compat.Pandoc (writeNative, pipeProcess)+import Text.Pandoc (def) import Data.List (isSuffixOf) import System.Environment import Control.Monad (when)@@ -65,17 +57,17 @@ indataNative <- UTF8.readFile $ "tests/" ++ csl ++ ".in.native" expectedNative <- UTF8.readFile $ "tests/" ++ csl ++ ".expected.native" let jsonIn = Aeson.encode $ (read indataNative :: Pandoc)- let expectedDoc = normalize $ read expectedNative+ let expectedDoc = read expectedNative testProgPath <- getExecutablePath let pandocCiteprocPath = takeDirectory testProgPath </> ".." </> "pandoc-citeproc" </> "pandoc-citeproc"- (ec, jsonOut, errout) <- pipeProcess+ (ec, jsonOut) <- pipeProcess (Just [("LANG","en_US.UTF-8"),("HOME",".")]) pandocCiteprocPath [] jsonIn if ec == ExitSuccess then do- let outDoc = normalize $ fromMaybe mempty $ Aeson.decode $ jsonOut+ let outDoc = fromMaybe mempty $ Aeson.decode $ jsonOut if outDoc == expectedDoc then err "PASSED" >> return Passed else do@@ -92,7 +84,6 @@ else do err "ERROR" err $ "Error status " ++ show ec- err $ UTF8.toStringLazy errout return Errored showDiff :: String -> String -> IO ()@@ -119,7 +110,7 @@ testProgPath <- getExecutablePath let pandocCiteprocPath = takeDirectory testProgPath </> ".." </> "pandoc-citeproc" </> "pandoc-citeproc"- (ec, result', errout) <- pipeProcess+ (ec, result') <- pipeProcess (Just [("LANG","en_US.UTF-8"),("HOME",".")]) pandocCiteprocPath ["--bib2yaml", "-f", drop 1 $ takeExtension fp]@@ -136,5 +127,4 @@ else do err "ERROR" err $ "Error status " ++ show ec- err $ UTF8.toStringLazy errout return Errored