diff options
author | Albert Krewinkel <albert@zeitkraut.de> | 2021-04-10 11:38:02 +0200 |
---|---|---|
committer | Albert Krewinkel <albert@zeitkraut.de> | 2021-04-10 11:49:18 +0200 |
commit | 2d60524de43d59ffb1763a33a15cc2ecce613ecf (patch) | |
tree | 42ee81ec4cf5cf4b92f7901f39027de4a4922110 | |
parent | 051b7ffeaffdaf34ed1384a239cf0179aa59b932 (diff) | |
download | pandoc-2d60524de43d59ffb1763a33a15cc2ecce613ecf.tar.gz |
JATS writer: convert spans to <named-content> elements
Spans with attributes are converted to `<named-content>` elements
instead of being wrapped with `<milestone-start/>` and `<milestone-end>`
elements. Milestone elements are not allowed in documents using the
articleauthoring tag set, so this change ensures the creation of valid
documents.
Closes: #7211
-rw-r--r-- | src/Text/Pandoc/Writers/JATS.hs | 13 | ||||
-rw-r--r-- | test/Tests/Writers/JATS.hs | 15 |
2 files changed, 22 insertions, 6 deletions
diff --git a/src/Text/Pandoc/Writers/JATS.hs b/src/Text/Pandoc/Writers/JATS.hs index e78c6dc8f..5b3e439d4 100644 --- a/src/Text/Pandoc/Writers/JATS.hs +++ b/src/Text/Pandoc/Writers/JATS.hs @@ -444,18 +444,19 @@ inlineToJATS opts (Note contents) = do ("rid", "fn" <> tshow notenum)] $ text (show notenum) inlineToJATS opts (Cite _ lst) = - -- TODO revisit this after examining the jats.csl pipeline inlinesToJATS opts lst -inlineToJATS opts (Span ("",_,[]) ils) = inlinesToJATS opts ils inlineToJATS opts (Span (ident,_,kvs) ils) = do contents <- inlinesToJATS opts ils let attr = [("id", escapeNCName ident) | not (T.null ident)] ++ [("xml:lang",l) | ("lang",l) <- kvs] ++ [(k,v) | (k,v) <- kvs - , k `elem` ["content-type", "rationale", - "rid", "specific-use"]] - return $ selfClosingTag "milestone-start" attr <> contents <> - selfClosingTag "milestone-end" [] + , k `elem` ["alt", "content-type", "rid", "specific-use", + "vocab", "vocab-identifier", "vocab-term", + "vocab-term-identifier"]] + return $ + if null attr + then contents -- unwrap if no relevant attributes are given + else inTags False "named-content" attr contents inlineToJATS _ (Math t str) = do let addPref (Xml.Attr q v) | Xml.qName q == "xmlns" = Xml.Attr q{ Xml.qName = "xmlns:mml" } v diff --git a/test/Tests/Writers/JATS.hs b/test/Tests/Writers/JATS.hs index 23c1686dc..e90438176 100644 --- a/test/Tests/Writers/JATS.hs +++ b/test/Tests/Writers/JATS.hs @@ -142,4 +142,19 @@ tests = codeWith ("7y",[],[]) "print 5" =?> "<p><monospace id=\"U0037y\">print 5</monospace></p>" ] + + , testGroup "spans" + [ "unwrapped if no attributes given" =: + spanWith nullAttr "text in span" =?> + "<p>text in span</p>" + + , "converted to named-content element" =: + spanWith ("a", ["ignored"], [("alt", "aa")]) "text" =?> + "<p><named-content id=\"a\" alt=\"aa\">text</named-content></p>" + + , "unwrapped if named-content element would have no attributes" =: + spanWith ("", ["ignored"], [("hidden", "true")]) "text in span" =?> + "<p>text in span</p>" + + ] ] |