From 0517cf0bc0db5e5b94c86f2dddc1fbc279632b2c Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Sat, 4 Mar 2017 23:01:29 +0100 Subject: [PATCH] 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. --- src/Text/Pandoc/Readers/HTML.hs | 4 ++- src/Text/Pandoc/Writers/Markdown.hs | 5 +-- test/command/1592.md | 49 +++++++++++++++++++++++++++++ 3 files changed, 53 insertions(+), 5 deletions(-) create mode 100644 test/command/1592.md 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 "" + 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 +hi +^D +[Para [SmallCaps [Str "hi"]]] +``` + +``` +% pandoc -f html -t native +

hi

+^D +[Para [SmallCaps [Str "hi"]]] +``` + +``` +% pandoc -f html -t native +

hi

+^D +[Para [SmallCaps [Str "hi"]]] +``` + +``` +% pandoc -f native -t html +[Para [SmallCaps [Str "hi"]]] +^D +

hi

+``` + +``` +pandoc -f native -t markdown +[Para [SmallCaps [Str "hi"]]] +^D +[hi]{.smallcaps} +``` +