git.iko.soy/typeable/pandoc
on master help sign in
JATS reader: parse abstract element into metadata field of same name (#6482)

Closes: #6480

commit19175af811b7a95c4e732466cddac04947c01917 authorAlbert Krewinkel <albert@zeitkraut.de> dateSun 28 Jun 2020, 19:35 (6 years ago) parentd2d5eb8
2 files changed+26
src/Text/Pandoc/Readers/JATS.hs+9 test/Tests/Readers/JATS.hs+17
src/Text/Pandoc/Readers/JATS.hs+9
@@ -317,6 +317,7 @@ parseMetadata e = do
317317 getTitle e
318318 getAuthors e
319319 getAffiliations e
320+ getAbstract e
320321 return mempty
321322
322323getTitle :: PandocMonad m => Element -> JATS m ()
@@ -348,6 +349,14 @@ getAffiliations x = do
348349 affs <- mapM getInlines $ filterChildren (named "aff") x
349350 unless (null affs) $ addMeta "institute" affs
350351
352+getAbstract :: PandocMonad m => Element -> JATS m ()
353+getAbstract e =
354+ case filterElement (named "abstract") e of
355+ Just s -> do
356+ blks <- getBlocks s
357+ addMeta "abstract" blks
358+ Nothing -> pure ()
359+
351360getContrib :: PandocMonad m => Element -> JATS m Inlines
352361getContrib x = do
353362 given <- maybe (return mempty) getInlines
test/Tests/Readers/JATS.hs+17
@@ -21,6 +21,8 @@ import Text.Pandoc
2121import Text.Pandoc.Arbitrary ()
2222import Text.Pandoc.Builder
2323
24+import qualified Data.Text as T
25+
2426jats :: Text -> Pandoc
2527jats = purely $ readJATS def
2628
@@ -126,4 +128,19 @@ tests = [ testGroup "inline code"
126128 \</sec>"
127129 =?> header 1 (image "imgs/foo.jpg" "" mempty)
128130 ]
131+
132+ , testGroup "metadata"
133+ [ test jats "abstract" $
134+ T.unlines [ "<front>"
135+ , "<article-meta>"
136+ , "<abstract>"
137+ , "<p>Paragraph 1</p>"
138+ , "<p>Paragraph 2</p>"
139+ , "</abstract>"
140+ , "</article-meta>"
141+ , "</front>"
142+ ] =?>
143+ let abstract = para "Paragraph 1" <> para "Paragraph 2"
144+ in setMeta "abstract" abstract $ doc mempty
145+ ]
129146 ]