From d1444b4ecdd7bc2f3b6180ceb2635d51382c4ab8 Mon Sep 17 00:00:00 2001 From: John MacFarlane Date: Thu, 17 Aug 2017 16:01:44 -0700 Subject: RST reader/writer: support unknown interpreted text roles... ...by parsing them as Span with "role" attributes. This way they can be manipulated in the AST. Closes #3407. --- src/Text/Pandoc/Readers/RST.hs | 6 ++---- src/Text/Pandoc/Writers/RST.hs | 7 ++++++- 2 files changed, 8 insertions(+), 5 deletions(-) (limited to 'src') diff --git a/src/Text/Pandoc/Readers/RST.hs b/src/Text/Pandoc/Readers/RST.hs index 0f594fe1b..190b065fb 100644 --- a/src/Text/Pandoc/Readers/RST.hs +++ b/src/Text/Pandoc/Readers/RST.hs @@ -1399,10 +1399,8 @@ renderRole contents fmt role attr = case role of case M.lookup custom customRoles of Just (newRole, newFmt, newAttr) -> renderRole contents newFmt newRole newAttr - Nothing -> do - pos <- getPosition - logMessage $ SkippedContent (":" ++ custom ++ ":") pos - return $ B.str contents -- Undefined role + Nothing -> -- undefined role + return $ B.spanWith ("",[],[("role",role)]) (B.str contents) where titleRef ref = return $ B.str ref -- FIXME: Not a sensible behaviour rfcLink rfcNo = B.link rfcUrl ("RFC " ++ rfcNo) $ B.str ("RFC " ++ rfcNo) diff --git a/src/Text/Pandoc/Writers/RST.hs b/src/Text/Pandoc/Writers/RST.hs index 17f5b3f91..8c941f568 100644 --- a/src/Text/Pandoc/Writers/RST.hs +++ b/src/Text/Pandoc/Writers/RST.hs @@ -439,7 +439,12 @@ inlineListToRST lst = -- | Convert Pandoc inline element to RST. inlineToRST :: PandocMonad m => Inline -> RST m Doc -inlineToRST (Span _ ils) = inlineListToRST ils +inlineToRST (Span (_,_,kvs) ils) = do + contents <- inlineListToRST ils + return $ + case lookup "role" kvs of + Just role -> ":" <> text role <> ":`" <> contents <> "`" + Nothing -> contents inlineToRST (Emph lst) = do contents <- inlineListToRST lst return $ "*" <> contents <> "*" -- cgit v1.2.3