aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlbert Krewinkel <albert@zeitkraut.de>2021-04-10 11:38:02 +0200
committerAlbert Krewinkel <albert@zeitkraut.de>2021-04-10 11:49:18 +0200
commit2d60524de43d59ffb1763a33a15cc2ecce613ecf (patch)
tree42ee81ec4cf5cf4b92f7901f39027de4a4922110
parent051b7ffeaffdaf34ed1384a239cf0179aa59b932 (diff)
downloadpandoc-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.hs13
-rw-r--r--test/Tests/Writers/JATS.hs15
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>"
+
+ ]
]