aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohn MacFarlane <jgm@berkeley.edu>2017-03-04 23:01:29 +0100
committerJohn MacFarlane <jgm@berkeley.edu>2017-03-04 23:01:29 +0100
commit0517cf0bc0db5e5b94c86f2dddc1fbc279632b2c (patch)
tree48225de7df84ae5ace195a7a9ae23d3716c9a722
parent40d1dc417aec8f7cbade5895a1f4ce549039c2c1 (diff)
downloadpandoc-0517cf0bc0db5e5b94c86f2dddc1fbc279632b2c.tar.gz
Fixed some loose ends in #1592.
Added test cases. Fixed HTML reader to parse a span with class "smallcaps" as SmallCaps. Fixed Markdown writer to render SmallCaps as a native span when native spans are enabled.
-rw-r--r--src/Text/Pandoc/Readers/HTML.hs4
-rw-r--r--src/Text/Pandoc/Writers/Markdown.hs5
-rw-r--r--test/command/1592.md49
3 files changed, 53 insertions, 5 deletions
diff --git a/src/Text/Pandoc/Readers/HTML.hs b/src/Text/Pandoc/Readers/HTML.hs
index f02f1a1d4..7e7d505ac 100644
--- a/src/Text/Pandoc/Readers/HTML.hs
+++ b/src/Text/Pandoc/Readers/HTML.hs
@@ -684,9 +684,11 @@ pSpan = try $ do
guardEnabled Ext_native_spans
TagOpen _ attr <- lookAhead $ pSatisfy $ tagOpen (=="span") (const True)
contents <- pInTags "span" inline
- let isSmallCaps = fontVariant == "small-caps"
+ let isSmallCaps = fontVariant == "small-caps" || "smallcaps" `elem` classes
where styleAttr = fromMaybe "" $ lookup "style" attr
fontVariant = fromMaybe "" $ pickStyleAttrProps ["font-variant"] styleAttr
+ classes = fromMaybe [] $
+ words <$> lookup "class" attr
let tag = if isSmallCaps then B.smallcaps else B.spanWith (mkAttr attr)
return $ tag contents
diff --git a/src/Text/Pandoc/Writers/Markdown.hs b/src/Text/Pandoc/Writers/Markdown.hs
index d34ccb0f6..7dc472568 100644
--- a/src/Text/Pandoc/Writers/Markdown.hs
+++ b/src/Text/Pandoc/Writers/Markdown.hs
@@ -971,10 +971,7 @@ inlineToMarkdown opts (SmallCaps lst) = do
plain <- asks envPlain
if not plain &&
(isEnabled Ext_raw_html opts || isEnabled Ext_native_spans opts)
- then do
- contents <- inlineListToMarkdown opts lst
- return $ tagWithAttrs "span" ("",["smallcaps"],[])
- <> contents <> text "</span>"
+ then inlineToMarkdown opts (Span ("",["smallcaps"],[]) lst)
else inlineListToMarkdown opts $ capitalize lst
inlineToMarkdown opts (Quoted SingleQuote lst) = do
contents <- inlineListToMarkdown opts lst
diff --git a/test/command/1592.md b/test/command/1592.md
new file mode 100644
index 000000000..54e59137b
--- /dev/null
+++ b/test/command/1592.md
@@ -0,0 +1,49 @@
+```
+% pandoc -t native
+[hi]{.smallcaps}
+^D
+[Para [SmallCaps [Str "hi"]]]
+```
+
+```
+% pandoc -t native
+[hi]{style="font-variant: small-caps;"}
+^D
+[Para [SmallCaps [Str "hi"]]]
+```
+
+```
+% pandoc -t native
+<span class="smallcaps">hi</span>
+^D
+[Para [SmallCaps [Str "hi"]]]
+```
+
+```
+% pandoc -f html -t native
+<p><span class="smallcaps">hi</span></p>
+^D
+[Para [SmallCaps [Str "hi"]]]
+```
+
+```
+% pandoc -f html -t native
+<p><span style="font-variant:small-caps">hi</span></p>
+^D
+[Para [SmallCaps [Str "hi"]]]
+```
+
+```
+% pandoc -f native -t html
+[Para [SmallCaps [Str "hi"]]]
+^D
+<p><span class="smallcaps">hi</span></p>
+```
+
+```
+pandoc -f native -t markdown
+[Para [SmallCaps [Str "hi"]]]
+^D
+[hi]{.smallcaps}
+```
+