diff options
author | John MacFarlane <jgm@berkeley.edu> | 2017-03-04 23:01:29 +0100 |
---|---|---|
committer | John MacFarlane <jgm@berkeley.edu> | 2017-03-04 23:01:29 +0100 |
commit | 0517cf0bc0db5e5b94c86f2dddc1fbc279632b2c (patch) | |
tree | 48225de7df84ae5ace195a7a9ae23d3716c9a722 | |
parent | 40d1dc417aec8f7cbade5895a1f4ce549039c2c1 (diff) | |
download | pandoc-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.hs | 4 | ||||
-rw-r--r-- | src/Text/Pandoc/Writers/Markdown.hs | 5 | ||||
-rw-r--r-- | test/command/1592.md | 49 |
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} +``` + |