@@ -648,6 +648,7 @@ inline = choice
648 , pLineBreak
648 , pLineBreak
652 , pCodeWithClass [("samp","sample"),("var","variable")]
653 , pCodeWithClass [("samp","sample"),("var","variable")]
@@ -802,6 +803,18 @@ pCode = try $ do
802 result <- manyTill pAny (pCloses open)
803 result <- manyTill pAny (pCloses open)
803 return $ B.codeWith (mkAttr attr) $ T.unwords $ T.lines $ innerText result
804 return $ B.codeWith (mkAttr attr) $ T.unwords $ T.lines $ innerText result
806+-- https://developer.mozilla.org/en-US/docs/Web/HTML/Element/bdo
807+-- Bidirectional Text Override
808+pBdo :: PandocMonad m => TagParser m Inlines
810+ TagOpen _ attr' <- lookAhead $ pSatisfy $ tagOpen (=="bdo") (const True)
811+ let attr = toStringAttr attr'
812+ contents <- pInTags "bdo" inline
813+ return $ case lookup "dir" attr of
814+ -- Only bdo with a direction matters
815+ Just dir -> B.spanWith ("", [], [("dir",T.toLower dir)]) contents
805pSpan :: PandocMonad m => TagParser m Inlines
818pSpan :: PandocMonad m => TagParser m Inlines
806pSpan = try $ do
819pSpan = try $ do
807 guardEnabled Ext_native_spans
820 guardEnabled Ext_native_spans